diff --git a/src/main/java/com/alibaba/druid/pool/PoolableStatement.java b/src/main/java/com/alibaba/druid/pool/PoolableStatement.java index 5de54918d2..b5140b26ed 100644 --- a/src/main/java/com/alibaba/druid/pool/PoolableStatement.java +++ b/src/main/java/com/alibaba/druid/pool/PoolableStatement.java @@ -93,12 +93,12 @@ public class PoolableStatement extends PoolableWrapper implements Statement { @Override public void close() throws SQLException { - clearResultSet(); - - stmt.close(); - this.closed = true; - - conn.getConnectionHolder().removeTrace(this); + if (!this.closed) { + clearResultSet(); + stmt.close(); + this.closed = true; + conn.getConnectionHolder().removeTrace(this); + } } @Override diff --git a/src/test/java/com/alibaba/druid/bvt/pool/Case3.java b/src/test/java/com/alibaba/druid/bvt/pool/Case3.java index 8a110234af..c1ad100a9a 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/Case3.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/Case3.java @@ -31,6 +31,9 @@ public class Case3 extends TestCase { Assert.assertEquals(true, stmt.isClosed()); Assert.assertEquals(true, rs.isClosed()); + + rs.close(); + stmt.close(); dataSource.close(); }