bug fixed

This commit is contained in:
wenshao
2013-04-29 02:21:10 +08:00
parent 4a7ae77e0d
commit e253364a13
5 changed files with 47 additions and 8 deletions
@@ -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++;
@@ -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;
@@ -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;
@@ -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);
}
}
@@ -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();
}
}