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
|
jLocked jId act = do
|
||||||
hasLock <- liftIO $ newTVarIO False
|
hasLock <- liftIO $ newTVarIO False
|
||||||
val <- runDB $ do
|
val <- runDB $ do
|
||||||
[executeQQ|
|
setSerializable
|
||||||
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
|
|
||||||
|]
|
|
||||||
j@QueuedJob{..} <- maybe (throwM $ JNonexistant jId) return =<< get jId
|
j@QueuedJob{..} <- maybe (throwM $ JNonexistant jId) return =<< get jId
|
||||||
maybe (return ()) throwM $ JLocked <$> pure jId <*> queuedJobLockInstance <*> queuedJobLockTime
|
maybe (return ()) throwM $ JLocked <$> pure jId <*> queuedJobLockInstance <*> queuedJobLockTime
|
||||||
case fromJSON queuedJobContent :: Aeson.Result Job of
|
case fromJSON queuedJobContent :: Aeson.Result Job of
|
||||||
@ -89,9 +87,15 @@ jLocked jId act = do
|
|||||||
act val `finally` whenM (liftIO . atomically $ readTVar hasLock) jUnlock
|
act val `finally` whenM (liftIO . atomically $ readTVar hasLock) jUnlock
|
||||||
where
|
where
|
||||||
jUnlock :: Handler ()
|
jUnlock :: Handler ()
|
||||||
jUnlock = runDB $ update jId [ QueuedJobLockInstance =. Nothing
|
jUnlock = runDB $ do
|
||||||
, QueuedJobLockTime =. Nothing
|
setSerializable
|
||||||
]
|
update jId [ QueuedJobLockInstance =. Nothing
|
||||||
|
, QueuedJobLockTime =. Nothing
|
||||||
|
]
|
||||||
|
|
||||||
|
setSerializable = [executeQQ|
|
||||||
|
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
|
||||||
|
|]
|
||||||
|
|
||||||
|
|
||||||
writeJobCtl :: (MonadHandler m, HandlerSite m ~ UniWorX) => JobCtl -> m ()
|
writeJobCtl :: (MonadHandler m, HandlerSite m ~ UniWorX) => JobCtl -> m ()
|
||||||
|
|||||||
Reference in New Issue
Block a user