@@ -46,14 +46,15 @@ import Development.IDE.Core.IdeConfiguration
46
46
import Development.IDE.Core.Service (shutdown )
47
47
import Development.IDE.Core.Shake hiding (Log )
48
48
import Development.IDE.Core.Tracing
49
- import Development.IDE.Core.WorkerThread
50
49
import qualified Development.IDE.Session as Session
51
50
import Development.IDE.Types.Shake (WithHieDb ,
52
51
WithHieDbShield (.. ))
52
+ import Development.IDE.WorkerThread
53
53
import Ide.Logger
54
54
import Language.LSP.Server (LanguageContextEnv ,
55
55
LspServerLog ,
56
56
type (<~> ))
57
+ import System.Time.Extra (Seconds , sleep )
57
58
import System.Timeout (timeout )
58
59
data Log
59
60
= LogRegisteringIdeConfig ! IdeConfiguration
@@ -67,10 +68,13 @@ data Log
67
68
| LogShutDownTimeout Int
68
69
| LogServerExitWith (Either () Int )
69
70
| LogReactorShutdownConfirmed ! T. Text
71
+ | LogInitializeIdeStateTookTooLong Seconds
70
72
deriving Show
71
73
72
74
instance Pretty Log where
73
75
pretty = \ case
76
+ LogInitializeIdeStateTookTooLong seconds ->
77
+ " Building the initial session took more than" <+> pretty seconds <+> " seconds"
74
78
LogReactorShutdownRequested b ->
75
79
" Requested reactor shutdown; stop signal posted: " <+> pretty b
76
80
LogReactorShutdownConfirmed msg ->
@@ -350,8 +354,8 @@ handleInit initParams env (TRequestMessage _ _ m params) = otTracedHandler "Init
350
354
runWithWorkerThreads :: Recorder (WithPriority Session. Log ) -> FilePath -> (WithHieDb -> ThreadQueue -> IO () ) -> IO ()
351
355
runWithWorkerThreads recorder dbLoc f = evalContT $ do
352
356
(WithHieDbShield hiedb, threadQueue) <- runWithDb recorder dbLoc
353
- sessionRestartTQueue <- withWorkerQueueSimple (cmapWithPrio Session. LogSessionWorkerThread recorder) " RestartTQueue"
354
- sessionLoaderTQueue <- withWorkerQueueSimple (cmapWithPrio Session. LogSessionWorkerThread recorder) " SessionLoaderTQueue"
357
+ sessionRestartTQueue <- withWorkerQueueSimple (logWith ( cmapWithPrio Session. LogSessionWorkerThread recorder) Debug ) " RestartTQueue"
358
+ sessionLoaderTQueue <- withWorkerQueueSimple (logWith ( cmapWithPrio Session. LogSessionWorkerThread recorder) Debug ) " SessionLoaderTQueue"
355
359
liftIO $ f hiedb (ThreadQueue threadQueue sessionRestartTQueue sessionLoaderTQueue)
356
360
357
361
-- | Runs the action until it ends or until the given MVar is put.
0 commit comments