diff options
| author | Joseph Hunkeler <jhunkeler@gmail.com> | 2025-12-30 11:28:36 -0500 |
|---|---|---|
| committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2025-12-30 11:28:36 -0500 |
| commit | 18b29bd58d1daa1752e981488445e0fcb100f2a7 (patch) | |
| tree | 0f4f2a5f62536ea80c7cd50801bc06d916e5c165 /src/cli/stasis/stasis_main.c | |
| parent | 67c290158cdb12b755c17b404f0eb63bc40eac73 (diff) | |
| download | stasis-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.c | 12 |
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) { |
