diff --git a/lib/gitlab/database.rb b/lib/gitlab/database.rb
index e6612bc3aadeda45d4cdf82e09c797699f0d3c9f..a6e9ea3dead8609c24eb020e12e53a0951ba6f34 100644
--- a/lib/gitlab/database.rb
+++ b/lib/gitlab/database.rb
@@ -72,10 +72,11 @@ module Gitlab
     def self.with_connection_pool(pool_size)
       pool = create_connection_pool(pool_size)
 
-      yield(pool)
-
-    ensure
-      pool.disconnect!
+      begin
+        yield(pool)
+      ensure
+        pool.disconnect!
+      end
     end
 
     def self.create_connection_pool(pool_size)