Skip to content

Commit 2a71e12

Browse files
committed
refactor: simplify spawnAsyncWithDbRegistration by removing registerHook parameter
1 parent b7e950a commit 2a71e12

3 files changed

Lines changed: 5 additions & 9 deletions

File tree

hls-graph/src/Development/IDE/Graph/Internal/Database.hs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ builderOne' parentKey db@Database {..} stack key = UE.uninterruptibleMask $ \res
163163
case (viewToRun $ keyStatus <$> status) of
164164
(Dirty prev) -> do
165165
SMap.focus (updateStatus $ Running current prev) key databaseValues
166-
let register = spawnRefresh db stack key barrier prev (return ()) refresh
166+
let register = spawnRefresh db stack key barrier prev refresh
167167
-- why it is important to use rollback here
168168

169169
{- Note [Rollback is required if killed before registration]
@@ -384,17 +384,15 @@ spawnRefresh ::
384384
Key ->
385385
MVar (Either SomeException (Key, Result)) ->
386386
Maybe Result ->
387-
STM () ->
388387
(Database -> t -> Key -> Maybe Result -> IO Result) ->
389388
(SomeException -> IO ()) ->
390389
(forall a. IO a -> IO a) ->
391390
IO ()
392-
spawnRefresh db@Database {..} stack key barrier prevResult registerHook refresher rollBack restore = do
391+
spawnRefresh db@Database {..} stack key barrier prevResult refresher rollBack restore = do
393392
Step currentStep <- readTVarIO databaseStep
394393
spawnAsyncWithDbRegistration
395394
db
396395
(DeliverStatus currentStep ("async computation; " ++ show key) key)
397-
registerHook
398396
(refresher db stack key prevResult)
399397
(\r -> do
400398
case r of

hls-graph/src/Development/IDE/Graph/Internal/Key.hs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ pattern Key :: () => (Typeable a, Hashable a, Show a) => a -> Key
6262
pattern Key a <- (lookupKeyValue -> (KeyValue a _))
6363
pattern DirectKey :: Int -> Key
6464
pattern DirectKey a <- (lookupKeyValue -> (DirectKeyValue a))
65-
{-# COMPLETE Key #-}
6665
{-# COMPLETE Key, DirectKey #-}
6766

6867
instance Pretty Key where

hls-graph/src/Development/IDE/Graph/Internal/Types.hs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -372,15 +372,14 @@ isRootKey _ = False
372372
-- 4. Exception safety with rollback on registration failure
373373
-- @ inline
374374
{-# INLINE spawnAsyncWithDbRegistration #-}
375-
spawnAsyncWithDbRegistration :: Database -> DeliverStatus -> STM () -> IO a1 -> (Either SomeException a1 -> IO ()) -> (forall a. IO a -> IO a) -> IO ()
376-
spawnAsyncWithDbRegistration db@Database{..} deliver registerHook asyncBody handler restore = do
375+
spawnAsyncWithDbRegistration :: Database -> DeliverStatus -> IO a1 -> (Either SomeException a1 -> IO ()) -> (forall a. IO a -> IO a) -> IO ()
376+
spawnAsyncWithDbRegistration db@Database{..} deliver asyncBody handler restore = do
377377
startBarrier <- newEmptyTMVarIO
378378
-- 1. we need to make sure the thread is registered before we actually start
379379
-- 2. we should not start in between the restart
380380
-- 3. if it is killed before we start, we need to cancel the async
381381
let register a = do
382382
dbNotLocked db
383-
registerHook
384383
modifyTVar' databaseThreads ((deliver, a):)
385384
-- make sure we only start after the restart
386385
putTMVar startBarrier ()
@@ -394,7 +393,7 @@ spawnAsyncWithDbRegistration db@Database{..} deliver registerHook asyncBody hand
394393
{-# INLINE runInThreadStmInNewThreads #-}
395394
runInThreadStmInNewThreads :: Database -> DeliverStatus -> IO a -> (Either SomeException a -> IO ()) -> IO ()
396395
runInThreadStmInNewThreads db deliver act handler = uninterruptibleMask $ \restore ->
397-
spawnAsyncWithDbRegistration db deliver (return ()) act handler restore
396+
spawnAsyncWithDbRegistration db deliver act handler restore
398397

399398
getDataBaseStepInt :: Database -> STM Int
400399
getDataBaseStepInt db = do

0 commit comments

Comments
 (0)