Skip to content

Commit dbf03a1

Browse files
authored
Start ghc-debug socket in development (#1055)
1 parent 454d82c commit dbf03a1

File tree

2 files changed

+25
-22
lines changed

2 files changed

+25
-22
lines changed

app/server/Main.hs

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
module Main where
66

77
import Control.Monad (forM_, unless)
8-
import Data.Function ((&))
98
import Data.List qualified as List
109
import Data.Set qualified as Set
1110
import Data.Text (Text)
@@ -22,39 +21,41 @@ import Effectful.Fail (runFailIO)
2221
import Effectful.FileSystem
2322
import Effectful.Log (Log, runLog)
2423
import Effectful.PostgreSQL.Transact.Effect (DB, dbtToEff, runDB)
24+
import GHC.Debug.Stub
2525
import Log qualified
2626
import System.Exit
27-
import System.IO
27+
import UnliftIO.IO
2828

2929
import Flora.Environment (getFloraEnv)
30-
import Flora.Environment.Env (FloraEnv (..), MLTP (..))
30+
import Flora.Environment.Env
3131
import Flora.Logging qualified as Logging
3232
import Flora.Model.PackageIndex.Types
3333
import FloraJobs.Scheduler (checkIfIndexRefreshJobIsPlanned)
3434
import FloraWeb.Server
3535

3636
main :: IO ()
37-
main = do
37+
main = runEff $ runFailIO $ runFileSystem $ do
38+
env <- getFloraEnv
3839
hSetBuffering stdout LineBuffering
39-
preFlightChecks
40-
runFlora
40+
preFlightChecks env
41+
case env.environment of
42+
Production -> liftIO runFlora
43+
_ -> liftIO $ withGhcDebug runFlora
4144

42-
preFlightChecks :: IO ()
43-
preFlightChecks = do
44-
env <- getFloraEnv & runFileSystem & runFailIO & runEff
45-
runEff $ do
46-
let withLogger = Logging.makeLogger env.mltp.logger
47-
withLogger $ \appLogger ->
48-
runDB env.pool
49-
. withUnliftStrategy (ConcUnlift Ephemeral Unlimited)
50-
$ runLog
51-
"flora-server"
52-
appLogger
53-
Log.LogTrace
54-
$ do
55-
checkExpectedTables
56-
checkRepositoriesAreConfigured
57-
checkIfIndexRefreshJobIsPlanned env.pool
45+
preFlightChecks :: IOE :> es => FloraEnv -> Eff es ()
46+
preFlightChecks env = do
47+
let withLogger = Logging.makeLogger env.mltp.logger
48+
withLogger $ \appLogger ->
49+
runDB env.pool
50+
. withUnliftStrategy (ConcUnlift Ephemeral Unlimited)
51+
$ runLog
52+
"flora-server"
53+
appLogger
54+
Log.LogTrace
55+
$ do
56+
checkExpectedTables
57+
checkRepositoriesAreConfigured
58+
checkIfIndexRefreshJobIsPlanned env.pool
5859

5960
checkExpectedTables :: (DB :> es, IOE :> es, Log :> es) => Eff es ()
6061
checkExpectedTables = do

flora.cabal

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -545,12 +545,14 @@ executable flora-server
545545
flora,
546546
flora-jobs,
547547
flora-web,
548+
ghc-debug-stub,
548549
log-base,
549550
log-effectful,
550551
pg-entity,
551552
pg-transact-effectful,
552553
postgresql-simple,
553554
text,
555+
unliftio,
554556
vector,
555557

556558
executable flora-cli

0 commit comments

Comments
 (0)