Skip to content

Commit 142e56b

Browse files
committed
Replace forkIO with async for server listener and update finalizer to cancel async
1 parent 774f0e9 commit 142e56b

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

lsp-test/src/Language/LSP/Test/Session.hs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ import Data.IORef
8383
import Colog.Core (LogAction (..), WithSeverity (..), Severity (..))
8484
import Data.String (fromString)
8585
import Data.Either (partitionEithers)
86+
import Control.Concurrent.Async (async, cancel)
8687

8788
-- | A session representing one instance of launching and connecting to a server.
8889
--
@@ -303,9 +304,9 @@ runSession' serverIn serverOut mServerProc serverHandler config caps rootDir exi
303304

304305
errorHandler = throwTo mainThreadId :: SessionException -> IO ()
305306
serverListenerLauncher =
306-
forkIO $ catch (serverHandler serverOut context) errorHandler
307+
async $ catch (serverHandler serverOut context) errorHandler
307308
msgTimeoutMs = messageTimeout config * 10^6
308-
serverAndListenerFinalizer tid = do
309+
serverAndListenerFinalizer async = do
309310
let cleanup
310311
| Just sp <- mServerProc = do
311312
-- Give the server some time to exit cleanly
@@ -318,7 +319,7 @@ runSession' serverIn serverOut mServerProc serverHandler config caps rootDir exi
318319
finally (timeout msgTimeoutMs (runSession' exitServer))
319320
-- Make sure to kill the listener first, before closing
320321
-- handles etc via cleanupProcess
321-
(killThread tid >> cleanup)
322+
(cancel async >> cleanup)
322323

323324
(result, _) <- bracket serverListenerLauncher
324325
serverAndListenerFinalizer

0 commit comments

Comments
 (0)