summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2026-07-05 11:25:41 +0200
committerRoman Smrž <roman.smrz@seznam.cz>2026-07-05 14:03:27 +0200
commit439481ad37868c732fa68fc31b65c581d0dcd7fa (patch)
treeb000f79cfc453b39f5c32af7daaca039f92d5c8d /src
parent26abedba2417ef166a3dfe2370736ec337ed7dfd (diff)
Restart cancelled jobs when needed
Diffstat (limited to 'src')
-rw-r--r--src/Job.hs10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/Job.hs b/src/Job.hs
index 7701da0..10fe865 100644
--- a/src/Job.hs
+++ b/src/Job.hs
@@ -226,8 +226,14 @@ runJobs mngr@JobManager {..} tout jobs rerun = do
managed <- readTVar jmJobs
( job, tid, ) <$> case M.lookup (jobId job) managed of
Just origVar -> do
- newTVar . JobDuplicate (jobId job) =<< readTVar origVar
-
+ readTVar origVar >>= \case
+ JobCancelled -> do
+ -- Restart previously cancelled job
+ statusVar <- newTVar JobQueued
+ writeTVar jmJobs $ M.insert (jobId job) statusVar managed
+ return statusVar
+ pstatus -> do
+ newTVar $ JobDuplicate (jobId job) pstatus
Nothing -> do
statusVar <- newTVar JobQueued
writeTVar jmJobs $ M.insert (jobId job) statusVar managed