diff --git a/CHANGELOG.md b/CHANGELOG.md index 7602c1ab1..b0e3d1ee4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). - #3607, Log to stderr when the JWT secret is less than 32 characters long - @laurenceisla - #2858, Performance improvements when calling RPCs via GET using indexes in more cases - @wolfgangwalther - #3560, Log resolved host in "Listening on ..." messages - @develop7 + - #3727, Log maximum pool size - @steve-chavez ### Fixed diff --git a/docs/references/observability.rst b/docs/references/observability.rst index a37d4e292..04a261ba4 100644 --- a/docs/references/observability.rst +++ b/docs/references/observability.rst @@ -31,8 +31,8 @@ For diagnostic information about the server itself, PostgREST logs to ``stderr`` .. code:: 06/May/2024:08:16:11 -0500: Starting PostgREST 12.1... - 06/May/2024:08:16:11 -0500: Attempting to connect to the database... 06/May/2024:08:16:11 -0500: Successfully connected to PostgreSQL 14.10 (Ubuntu 14.10-0ubuntu0.22.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, 64-bit + 06/May/2024:08:16:11 -0500: Connection Pool initialized with a maximum size of 10 connections 06/May/2024:08:16:11 -0500: API server listening on port 3000 06/May/2024:08:16:11 -0500: Listening for database notifications on the "pgrst" channel 06/May/2024:08:16:11 -0500: Config reloaded diff --git a/docs/tutorials/tut0.rst b/docs/tutorials/tut0.rst index 64e0292ca..f70cf709d 100644 --- a/docs/tutorials/tut0.rst +++ b/docs/tutorials/tut0.rst @@ -213,12 +213,8 @@ You should see something similar to: .. code-block:: text Starting PostgREST 12.0.2... - Attempting to connect to the database... - Connection successful - Listening on port 3000 - Config reloaded - Listening for notifications on the pgrst channel - Schema cache loaded + Successfully connected to PostgreSQL 14.10 (Ubuntu 14.10-0ubuntu0.22.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, 64-bit + API server listening on port 3000 It's now ready to serve web requests. There are many nice graphical API exploration tools you can use, but for this tutorial we'll use :code:`curl` because it's likely to be installed on your system already. Open a new terminal (leaving the one open that PostgREST is running inside). Try doing an HTTP request for the todos. diff --git a/src/PostgREST/App.hs b/src/PostgREST/App.hs index f99d8683f..99febebac 100644 --- a/src/PostgREST/App.hs +++ b/src/PostgREST/App.hs @@ -67,8 +67,6 @@ run appState = do let observer = AppState.getObserver appState conf@AppConfig{..} <- AppState.getConfig appState - observer $ AppStartObs prettyVersion - AppState.schemaCacheLoader appState -- Loads the initial SchemaCache Unix.installSignalHandlers (AppState.getMainThreadId appState) (AppState.schemaCacheLoader appState) (AppState.readInDbConfig False appState) diff --git a/src/PostgREST/AppState.hs b/src/PostgREST/AppState.hs index 45dd2669a..c52c63d2a 100644 --- a/src/PostgREST/AppState.hs +++ b/src/PostgREST/AppState.hs @@ -132,6 +132,8 @@ init conf@AppConfig{configLogLevel, configDbPoolSize} = do metricsState <- Metrics.init configDbPoolSize let observer = liftA2 (>>) (Logger.observationLogger loggerState configLogLevel) (Metrics.observationMetrics metricsState) + observer $ AppStartObs prettyVersion + pool <- initPool conf observer (sock, adminSock) <- initSockets conf state' <- initWithPool (sock, adminSock) pool conf loggerState metricsState observer @@ -206,7 +208,7 @@ initSockets AppConfig{..} = do pure (sock, adminSock) initPool :: AppConfig -> ObservationHandler -> IO SQL.Pool -initPool AppConfig{..} observer = +initPool AppConfig{..} observer = do SQL.acquire $ SQL.settings [ SQL.size configDbPoolSize , SQL.acquisitionTimeout $ fromIntegral configDbPoolAcquisitionTimeout @@ -391,6 +393,7 @@ retryingSchemaCacheLoad appState@AppState{stateObserver=observer, stateMainThrea observer $ ExitUnsupportedPgVersion actualPgVersion minimumPgVersion killThread mainThreadId observer $ DBConnectedObs $ pgvFullName actualPgVersion + observer $ PoolInit configDbPoolSize putPgVersion appState actualPgVersion return $ Just actualPgVersion diff --git a/src/PostgREST/Observation.hs b/src/PostgREST/Observation.hs index 44c5c4d12..9e9866180 100644 --- a/src/PostgREST/Observation.hs +++ b/src/PostgREST/Observation.hs @@ -49,6 +49,7 @@ data Observation | QueryRoleSettingsErrorObs SQL.UsageError | QueryErrorCodeHighObs SQL.UsageError | QueryPgVersionError SQL.UsageError + | PoolInit Int | PoolAcqTimeoutObs SQL.UsageError | HasqlPoolObs SQL.Observation | PoolRequest @@ -118,6 +119,8 @@ observationMessage = \case "Failed reloading config: " <> err ConfigSucceededObs -> "Config reloaded" + PoolInit poolSize -> + "Connection Pool initialized with a maximum size of " <> show poolSize <> " connections" PoolAcqTimeoutObs usageErr -> jsonMessage usageErr HasqlPoolObs (SQL.ConnectionObservation uuid status) ->