on master help sign in
Made tasks restart automatically
commita2edc92ed5ee7b982d95c851659aa34cdedd178c authoriko <ilyakooo0@gmail.com> dateMon 24 Feb 2020, 15:27 (7 years ago) parent497d7c4
3 files changed+21−3
src/Control/Task/Scheduler.hs+1−3 src/Control/Task/Scheduler/Query.hs+15 src/Server.hs+5
src/Control/Task/Scheduler.hs+1−3
@@ -3,6 +3,7 @@
33module Control.Task.Scheduler
44 ( scheduleTask,
55 runTasks,
6+ makeAllRunnable,
67 )
78where
89
@@ -45,7 +46,6 @@ rescheduleTaskTime ::
4546rescheduleTaskTime = rescheduleTaskQuery
4647
4748class RunTasks (ts :: [*]) m where
48−
4949 runTask :: WithLog env Message m => PickedTask -> m ()
5050
5151 taskNames :: [String]
@@ -55,7 +55,6 @@ instance
5555 (Task t ts, TaskMonad t m, StaticPQ m, RunTasks tt m, MonadUnliftIO m) =>
5656 RunTasks (t ': tt) m
5757 where
58−
5958 runTask (PickedTask s (Jsonb v) initialStartTime) | symbolVal @ts Proxy == s =
6059 case fromJSON @t v of
6160 A.Error e ->
@@ -79,7 +78,6 @@ instance
7978 taskNames = symbolVal @ts Proxy : taskNames @tt @m
8079
8180instance RunTasks '[] m where
82−
8381 runTask (PickedTask s (Jsonb v) _) =
8482 logError . T.pack $ "Unknown task " <> s <> " with payload " <> show v
8583
src/Control/Task/Scheduler/Query.hs+15
@@ -5,6 +5,7 @@ module Control.Task.Scheduler.Query
55 completeTaskQuery,
66 rescheduleTaskQuery,
77 pickTasksQuery,
8+ makeAllRunnable,
89 PickedTask (..),
910 )
1011where
@@ -132,3 +133,17 @@ data PickedTask
132133 creationTime :: UTCTime
133134 }
134135 deriving (Eq, Show, Generic, SOP.Generic, SOP.HasDatatypeInfo)
136+
137+makeAllRunnable ::
138+ (StaticPQ m, WithLog env Message m, MonadUnliftIO m) =>
139+ m ()
140+makeAllRunnable = do
141+ let startAll :: Manipulation_ Schema () ()
142+ startAll =
143+ update_
144+ #tasks
145+ ( Set false `as` #started
146+ )
147+ (notNull #started)
148+ dbWrite (const $ return ()) $
149+ manipulate_ startAll
src/Server.hs+5
@@ -193,6 +193,11 @@ runServer = do
193193 repeatIfNotEmpty n f
194194 printingErrors =
195195 handleAny (logError . T.pack . displayException >=> const (return 0))
196+ usingConnectionPool pool
197+ . (`runReaderT` serverData)
198+ . unApp
199+ . handleAny (error . displayException)
200+ $ makeAllRunnable
196201 replicateM_ builderCount
197202 $ forkIO . repeatIfNotEmpty (10 ^ (6 :: Int))
198203 . usingConnectionPool pool