aboutsummaryrefslogtreecommitdiff
path: root/src/cli/stasis/stasis_main.c
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2025-12-30 11:28:36 -0500
committerJoseph Hunkeler <jhunkeler@gmail.com>2025-12-30 11:28:36 -0500
commit18b29bd58d1daa1752e981488445e0fcb100f2a7 (patch)
tree0f4f2a5f62536ea80c7cd50801bc06d916e5c165 /src/cli/stasis/stasis_main.c
parent67c290158cdb12b755c17b404f0eb63bc40eac73 (diff)
downloadstasis-18b29bd58d1daa1752e981488445e0fcb100f2a7.tar.gz
Implement task timeout
* Add argument: --task-timeout=1[s,m,h] * Timed out tasks are SIGKILL'd * If killing a task fails, the entire program ends
Diffstat (limited to 'src/cli/stasis/stasis_main.c')
-rw-r--r--src/cli/stasis/stasis_main.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/cli/stasis/stasis_main.c b/src/cli/stasis/stasis_main.c
index 967ecaf..44ee6d7 100644
--- a/src/cli/stasis/stasis_main.c
+++ b/src/cli/stasis/stasis_main.c
@@ -540,6 +540,18 @@ int main(int argc, char *argv[]) {
case OPT_FAIL_FAST:
globals.parallel_fail_fast = true;
break;
+ case OPT_TASK_TIMEOUT:
+ globals.task_timeout = str_to_timeout(optarg);
+ if (globals.task_timeout < 0) {
+ fprintf(stderr, "Invalid timeout: %s\n", optarg);
+ if (globals.task_timeout == STR_TO_TIMEOUT_INVALID_TIME_SCALE) {
+ fprintf(stderr, "Use format '#s' (seconds), '#m' (minutes), '#h' (hours)\n");
+ } else if (globals.task_timeout == STR_TO_TIMEOUT_NEGATIVE) {
+ fprintf(stderr, "Timeout cannot be negative\n");
+ }
+ exit(1);
+ }
+ break;
case OPT_POOL_STATUS_INTERVAL:
globals.pool_status_interval = (int) strtol(optarg, NULL, 10);
if (globals.pool_status_interval < 1) {