Commit Graph

87 Commits

Author SHA1 Message Date
Ingo Oppermann
a416beea08 Add stream mapping to process state, adjust addresses and indexes for HLS outputs 2023-09-26 14:52:54 +02:00
Ingo Oppermann
48cc454314 Add expose 'mode' from avstream progress 2023-09-20 20:53:50 +02:00
Ingo Oppermann
8fef2dea65 Add address resolver and validator for probe 2023-08-09 14:47:56 +03:00
Ingo Oppermann
d930a91cbb Provide Probe() a config instead of a process ID 2023-08-09 09:30:17 +03:00
Ingo Oppermann
81581091e8 Move read-lock after function call that also uses that lock 2023-07-25 17:14:11 +02:00
Ingo Oppermann
3e842f2b2f Fix cleanup path becomes relative when prepended with domain 2023-07-23 20:39:49 +02:00
Ingo Oppermann
97a8e0f815 Use same permission mask 2023-07-19 17:41:02 +02:00
Ingo Oppermann
8a8ff6d4f4 Add LimitMode and Resources.CPU.IsThrottling to process state 2023-07-17 21:45:19 +02:00
Ingo Oppermann
62fdf8e370 List undeployed processes 2023-07-11 22:38:33 +02:00
Ingo Oppermann
9462ccfd48 Move IAM dependency to rewriter module 2023-07-10 13:20:24 +02:00
Ingo Oppermann
2b58c11bb1 Fix cluster process update on metadata change 2023-06-28 16:26:36 +02:00
Ingo Oppermann
debcce192d Add the process domain to the bas path in placeholders and cleanup rules 2023-06-14 22:30:00 +02:00
Ingo Oppermann
129058e633 Improve FS.List and FS.RemoveList functions, improve CleanupFS
The FS.List and FS.RemoveList are up to 42x faster by precompiling the
globbing pattern.

The CleanupFS from restreamer/fs is up to 32x faster in the benchmarks
and cleanup is now only every 5 seconds instead of every second.
2023-06-12 11:36:07 +02:00
Ingo Oppermann
7e7d1caca7 Add EmergencyLeaderTimeout parameter, ignore throttling nodes, implement NodeRecoverTimeout, introduce processNodeMap in cluster DB 2023-06-07 22:08:07 +02:00
Ingo Oppermann
08bdf752f1 Fix tests 2023-06-06 22:07:21 +02:00
Ingo Oppermann
fc03bf73a2 Make resource manager a main module and expose more details 2023-06-06 21:28:08 +02:00
Ingo Oppermann
8829b8fff0 Respect domain in cluster DB, allow metadata in process config for cluster 2023-06-05 21:19:11 +02:00
Ingo Oppermann
e9ba394c2e Fix process stored in DB 2023-06-02 14:16:12 +02:00
Ingo Oppermann
f59a63320c Allow to pass metadata with process config, non-cluster only 2023-06-01 21:24:33 +02:00
Ingo Oppermann
d652fd213b Check for identical configs on process update 2023-06-01 16:43:17 +02:00
Ingo Oppermann
a79cfa0c77 Merge branch 'clusteriam' into vod 2023-06-01 15:16:54 +02:00
Ingo Oppermann
1f1a124bb4 Check and lof resource specification 2023-05-24 14:53:33 +02:00
Ingo Oppermann
ccac2ffd5d Various updates
- rebrand group to domain
- move IAM to the API (rest and graph) for enforcing "process:" rules
- add abstraction layer for restream store in order to decouple internal format from format on disk
- move playout handler into restreamHandler
- remove user from restream interface
- add TaskID type that includes the process id and its domain
2023-05-23 15:47:06 +02:00
Ingo Oppermann
f03e2ca5c5 Merge branch 'dev' into iam 2023-05-16 13:19:45 +02:00
Ingo Oppermann
8c3b570ecc Fix log transfer 2023-05-15 21:31:58 +02:00
Ingo Oppermann
ead6e64442 Merge branch 'dev' into iam 2023-05-15 21:17:23 +02:00
Ingo Oppermann
4c3c8d3bd4 Merge branch 'dev' into vod 2023-05-05 12:09:54 +02:00
Ingo Oppermann
6759ebc950 Fix keeping order on process update 2023-05-03 10:50:33 +02:00
Ingo Oppermann
4d5a1f9617 Fix too early history transfer to new parser during process update 2023-05-02 22:39:34 +02:00
Ingo Oppermann
ef138fb90f Limit CPU and memory independently, release CPU throttling incremently 2023-05-01 16:29:18 +02:00
Ingo Oppermann
2376e43f96 Fix process restart to restart immediately regardless if reconnect is defined 2023-04-29 08:27:40 +02:00
Ingo Oppermann
f0a7564c55 Transfer report history when a process is reloaded 2023-04-29 08:12:45 +02:00
Ingo Oppermann
74f98e8c7e Define system CPU resources in percent 0-100, acquiring resources check with available system resources 2023-04-28 10:27:33 +02:00
Ingo Oppermann
7527f7833b Add resource manager 2023-04-27 17:02:20 +02:00
Ingo Oppermann
b723f4e5fd Propagate number of logical CPUs in resource usage 2023-04-27 10:58:41 +02:00
Ingo Oppermann
5e2060f785 WIP: add resource manager 2023-04-26 22:05:46 +02:00
Ingo Oppermann
d59158de03 Allow hard and soft limiting a process
A hard limit will kill the process as soon as either CPU or memory
consumption are above a defined limit for a certain amount of time.

A soft limit will throttle the CPU usage if above a defined limit and
kill the process if memory consumption is above a defined limit. The
soft limit can be enabled/disabled on demand.

The default is hard limit.
2023-04-26 16:01:50 +02:00
Ingo Oppermann
a2dab2682f Fix not propagating process limits 2023-04-26 09:49:28 +02:00
Ingo Oppermann
9b17ab2b29 Add global limits in config, fix not using process limits 2023-04-25 21:49:55 +02:00
Ingo Oppermann
b70382c40b Expose resource usage in process state 2023-04-25 16:20:59 +02:00
Ingo Oppermann
3a1825cf61 Expose resource usage in report history 2023-04-25 15:55:32 +02:00
Ingo Oppermann
c1bbb4065c Merge branch 'dev' into vod 2023-04-24 12:16:52 +02:00
Ingo Oppermann
317d6eb4d9 Add updated_at field in process infos 2023-04-24 12:05:01 +02:00
Ingo Oppermann
6ddd58a124 Preserve process log history when updating a process 2023-04-24 11:59:09 +02:00
Ingo Oppermann
76abf5474f Fix compilation error 2023-04-13 15:43:59 +02:00
Ingo Oppermann
b96672e308 Forward keyframe and extradata_bytes counter to API 2023-04-11 08:59:24 +02:00
Ingo Oppermann
84817f137a Merge branch 'dev' into iam 2023-04-03 15:44:16 +02:00
Ingo Oppermann
0a3117bbd0 Add log_patterns to process config
log_patterns allow to filter the FFmpeg log messages based on regular
expressions. Each entry of log_patterns is interpreted as regular
expression and matched against every non-progress log line emitted from
FFmpeg. All matching lines are returned in the matches array of the
report.
2023-03-27 15:50:25 +02:00
Ingo Oppermann
99c571d623 Add event filter support 2023-03-23 14:50:59 +01:00
Ingo Oppermann
b63b23527b Add scheduler and timeout to processes
The scheduler allows to define when a process should run. It can be either
a timestamp in RFC3339 format or a crontab expression. If a scheduler is
given, reconnect and the reconnect delay will only apply to processes that
exited as failed.

The timeout allows to define when a process should be gracefully stopped.
It is measured from the actual start of that process including all reconnects
due to failures. If the process finished regularly, the timeout will be
reset.
2023-03-21 14:51:43 +01:00