From 952efa9368acb6c1be68edb48aeef701465b3058 Mon Sep 17 00:00:00 2001 From: Andrey Prokopenko Date: Wed, 26 Aug 2026 12:46:01 +0200 Subject: [PATCH 1/3] fix: make `loggedClose` uninterruptible --- persistent/Database/Persist/Sql/Run.hs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/persistent/Database/Persist/Sql/Run.hs b/persistent/Database/Persist/Sql/Run.hs index 62e699c1b..442fb99cb 100644 --- a/persistent/Database/Persist/Sql/Run.hs +++ b/persistent/Database/Persist/Sql/Run.hs @@ -280,11 +280,11 @@ createSqlPoolWithConfig -> m (Pool backend) createSqlPoolWithConfig mkConn config = do logFunc <- askLoggerIO - -- Resource pool will swallow any exceptions from close. We want to log - -- them instead. + -- NOTE: resource-pool >= 0.5 no longer runs the pool's free action + -- uninterruptibly, and no longer swallows its exceptions. let loggedClose :: backend -> IO () - loggedClose backend = + loggedClose backend = UE.uninterruptibleMask_ $ close' backend `UE.catchAny` \e -> do runLoggingT (logError $ T.pack $ "Error closing database connection in pool: " ++ show e) From 9e2a1ceed9946d452bcf01c1bacda6366da3c355 Mon Sep 17 00:00:00 2001 From: Andrey Prokopenko Date: Wed, 26 Aug 2026 13:08:18 +0200 Subject: [PATCH 2/3] lint: apply fourmolu --- persistent/Database/Persist/Sql/Run.hs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/persistent/Database/Persist/Sql/Run.hs b/persistent/Database/Persist/Sql/Run.hs index 442fb99cb..2b6dcb1a3 100644 --- a/persistent/Database/Persist/Sql/Run.hs +++ b/persistent/Database/Persist/Sql/Run.hs @@ -284,12 +284,13 @@ createSqlPoolWithConfig mkConn config = do -- uninterruptibly, and no longer swallows its exceptions. let loggedClose :: backend -> IO () - loggedClose backend = UE.uninterruptibleMask_ $ - close' backend `UE.catchAny` \e -> do - runLoggingT - (logError $ T.pack $ "Error closing database connection in pool: " ++ show e) - logFunc - UE.throwIO e + loggedClose backend = + UE.uninterruptibleMask_ $ + close' backend `UE.catchAny` \e -> do + runLoggingT + (logError $ T.pack $ "Error closing database connection in pool: " ++ show e) + logFunc + UE.throwIO e liftIO $ createPool (mkConn logFunc) From b6a659e6117818dc49ca9461278a048c8d31b188 Mon Sep 17 00:00:00 2001 From: Andrey Prokopenko Date: Wed, 26 Aug 2026 13:09:21 +0200 Subject: [PATCH 3/3] bump version and update changelog --- persistent/ChangeLog.md | 4 ++++ persistent/persistent.cabal | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/persistent/ChangeLog.md b/persistent/ChangeLog.md index a7703759e..f90f5933f 100644 --- a/persistent/ChangeLog.md +++ b/persistent/ChangeLog.md @@ -1,5 +1,9 @@ # Changelog for persistent +# 2.18.1.1 +* [#1637](https://github.com/yesodweb/persistent/pull/1637) + * Fixes interruptible logging on connection closing inside `createSqlPoolWithConfig` since `resource-pool-0.5.x`. + # 2.18.1.0 * [#1616](https://github.com/yesodweb/persistent/pull/1616) * Allow overriding the default cascade option for foreign keys. diff --git a/persistent/persistent.cabal b/persistent/persistent.cabal index d30976467..4d83673d5 100644 --- a/persistent/persistent.cabal +++ b/persistent/persistent.cabal @@ -1,5 +1,5 @@ name: persistent -version: 2.18.1.0 +version: 2.18.1.1 license: MIT license-file: LICENSE author: Michael Snoyman