Return the results from withResource function before applying the respond continuation. This ensures that the pool resource is freed as soon as the database operation is complete

This commit is contained in:
Diogo Biazus
2016-02-20 18:03:06 -08:00
committed by Joe Nelson
parent 52e689b830
commit de848f64fa
+4 -3
View File
@@ -97,8 +97,9 @@ main = do
body <- strictRequestBody req
let handleReq = H.run $ inTransaction ReadCommitted
(runWithClaims conf time (app dbStructure conf body) req)
withResource pool $ \case
Left err -> respond $ errResponse HT.status500 (cs . show $ err)
res <- withResource pool $ \case
Left err -> return $ errResponse HT.status500 (cs . show $ err)
Right c -> do
resOrError <- handleReq c
either (respond . pgErrResponse) respond resOrError
either (return . pgErrResponse) return resOrError
respond res