more serializition
This commit is contained in:
parent
1f833ca7fb
commit
5869cb226b
16
src/Jobs.hs
16
src/Jobs.hs
@ -69,9 +69,7 @@ jLocked :: QueuedJobId -> (QueuedJob -> Handler a) -> Handler a
|
||||
jLocked jId act = do
|
||||
hasLock <- liftIO $ newTVarIO False
|
||||
val <- runDB $ do
|
||||
[executeQQ|
|
||||
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
|
||||
|]
|
||||
setSerializable
|
||||
j@QueuedJob{..} <- maybe (throwM $ JNonexistant jId) return =<< get jId
|
||||
maybe (return ()) throwM $ JLocked <$> pure jId <*> queuedJobLockInstance <*> queuedJobLockTime
|
||||
case fromJSON queuedJobContent :: Aeson.Result Job of
|
||||
@ -89,9 +87,15 @@ jLocked jId act = do
|
||||
act val `finally` whenM (liftIO . atomically $ readTVar hasLock) jUnlock
|
||||
where
|
||||
jUnlock :: Handler ()
|
||||
jUnlock = runDB $ update jId [ QueuedJobLockInstance =. Nothing
|
||||
, QueuedJobLockTime =. Nothing
|
||||
]
|
||||
jUnlock = runDB $ do
|
||||
setSerializable
|
||||
update jId [ QueuedJobLockInstance =. Nothing
|
||||
, QueuedJobLockTime =. Nothing
|
||||
]
|
||||
|
||||
setSerializable = [executeQQ|
|
||||
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
|
||||
|]
|
||||
|
||||
|
||||
writeJobCtl :: (MonadHandler m, HandlerSite m ~ UniWorX) => JobCtl -> m ()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user