diff --git a/fcrepo-server/src/main/java/org/fcrepo/server/storage/ConnectionPool.java b/fcrepo-server/src/main/java/org/fcrepo/server/storage/ConnectionPool.java
index <HASH>..<HASH> 100755
--- a/fcrepo-server/src/main/java/org/fcrepo/server/storage/ConnectionPool.java
+++ b/fcrepo-server/src/main/java/org/fcrepo/server/storage/ConnectionPool.java
@@ -331,9 +331,13 @@ public class ConnectionPool {
      */
     public void free(Connection connection) {
         try {
-            // ensure connections returned to pool as read-only
-            setConnectionReadOnly(connection, true);
-            if (!connection.isClosed()) connection.close();
+            if (!connection.isClosed()){
+                // ensure connections returned to pool as read-only
+                setConnectionReadOnly(connection, true);
+                connection.close();
+            } else {
+                logger.debug("Ignoring attempt to close a previously closed connection");
+            }
         } catch (SQLException sqle) {
             logger.warn("Unable to close connection", sqle);
         } finally {
FCREPO-<I>: do not attempt to change read-only state of closed connections