diff --git a/Yesod/Persist/Core.hs b/Yesod/Persist/Core.hs
--- a/Yesod/Persist/Core.hs
+++ b/Yesod/Persist/Core.hs
@@ -25,8 +25,7 @@
 import Yesod.Core
 import Data.Conduit
 import Blaze.ByteString.Builder (Builder)
-import Data.IORef.Lifted
-import Data.Conduit.Pool
+import Data.Pool
 import Control.Monad.Trans.Resource
 import Control.Exception (throwIO)
 import Yesod.Core.Types (HandlerContents (HCError))
@@ -82,24 +81,23 @@
                    => (site -> Pool SQL.Connection)
                    -> HandlerT site IO (DBRunner site, HandlerT site IO ())
 defaultGetDBRunner getPool = do
-    ididSucceed <- newIORef False
-
     pool <- fmap getPool getYesod
-    managedConn <- takeResource pool
-    let conn = mrValue managedConn
-
-    let withPrep f = f conn (SQL.connPrepare conn)
-    (finishTransaction, ()) <- allocate (withPrep SQL.connBegin) $ \() -> do
-        didSucceed <- readIORef ididSucceed
-        withPrep $ if didSucceed
-            then SQL.connCommit
-            else SQL.connRollback
+    let withPrep conn f = f conn (SQL.connPrepare conn)
+    (relKey, (conn, local)) <- allocate
+        (do
+            (conn, local) <- takeResource pool
+            withPrep conn SQL.connBegin
+            return (conn, local)
+            )
+        (\(conn, local) -> do
+            withPrep conn SQL.connRollback
+            destroyResource pool local conn)
 
-    let cleanup = do
-            writeIORef ididSucceed True
-            release finishTransaction
-            mrReuse managedConn True
-            mrRelease managedConn
+    let cleanup = liftIO $ do
+            withPrep conn SQL.connCommit
+            putResource local conn
+            _ <- unprotect relKey
+            return ()
 
     return (DBRunner $ \x -> runReaderT (unSqlPersistT x) conn, cleanup)
 
diff --git a/yesod-persistent.cabal b/yesod-persistent.cabal
--- a/yesod-persistent.cabal
+++ b/yesod-persistent.cabal
@@ -1,5 +1,5 @@
 name:            yesod-persistent
-version:         1.2.2.1
+version:         1.2.2.2
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
@@ -20,9 +20,8 @@
                    , transformers              >= 0.2.2    && < 0.4
                    , blaze-builder
                    , conduit
-                   , lifted-base
-                   , pool-conduit
-                   , resourcet
+                   , resourcet                 >= 0.4.5
+                   , resource-pool
     exposed-modules: Yesod.Persist
                      Yesod.Persist.Core
     ghc-options:     -Wall
