diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index 89961fe4ff..3028f22a27 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -799,7 +799,12 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat public void discardConnection(Connection realConnection) { JdbcUtils.close(realConnection); - lock.lock(); + try { + lock.lockInterruptibly(); + } catch (InterruptedException e) { + LOG.error("interrupt"); + return; + } try { activeCount--; discardCount++; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlPartitioningClause.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlPartitioningClause.java index 652a5710fc..e8d06a10a8 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlPartitioningClause.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlPartitioningClause.java @@ -1,3 +1,18 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.alibaba.druid.sql.dialect.mysql.ast.statement; import java.util.ArrayList; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlPartitioningDef.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlPartitioningDef.java index 89b074f9aa..1d6d3ca9dc 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlPartitioningDef.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlPartitioningDef.java @@ -1,3 +1,18 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.alibaba.druid.sql.dialect.mysql.ast.statement; import java.util.ArrayList; diff --git a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_recycle2.java b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_recycle2.java index f34346484c..913aaef882 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_recycle2.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_recycle2.java @@ -73,9 +73,9 @@ public class DruidDataSourceTest_recycle2 extends TestCase { } catch (Exception e) { error = e; } - Assert.assertNotNull(error); + Assert.assertNull(error); - Assert.assertEquals(0, dataSource.getPoolingCount()); + Assert.assertEquals(1, dataSource.getPoolingCount()); Assert.assertEquals(0, dataSource.getActiveCount()); } @@ -125,7 +125,6 @@ public class DruidDataSourceTest_recycle2 extends TestCase { Assert.assertTrue(endLatch.await(1, TimeUnit.MINUTES)); Exception error = errorRef.get(); - Assert.assertNotNull(error); - Assert.assertTrue(error.getCause() instanceof InterruptedException); + Assert.assertNull(error); } } diff --git a/src/test/java/com/alibaba/druid/bvt/pool/ExceptionSorterTest.java b/src/test/java/com/alibaba/druid/bvt/pool/ExceptionSorterTest.java index 6e1c7a1ab4..cf76fe314c 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/ExceptionSorterTest.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/ExceptionSorterTest.java @@ -40,11 +40,16 @@ public class ExceptionSorterTest extends TestCase { PreparedStatement stmt = conn.prepareStatement("select 1"); stmt.execute(); - + mockConn.close(); - stmt.close(); - + Exception stmtClosedError = null; + try { + stmt.close(); + } catch (Exception ex) { + stmtClosedError = ex; + } + Assert.assertNotNull(stmtClosedError); conn.close(); } }