diff --git a/src/main/java/com/alibaba/druid/pool/ha/MultiDataSource.java b/src/main/java/com/alibaba/druid/pool/ha/MultiDataSource.java index ed4b43c168..2cf4235f7a 100644 --- a/src/main/java/com/alibaba/druid/pool/ha/MultiDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/ha/MultiDataSource.java @@ -255,7 +255,9 @@ public class MultiDataSource extends DataSourceAdapter implements MultiDataSourc } public void close() { - scheduler.shutdownNow(); + if (scheduler != null) { + scheduler.shutdownNow(); + } Object[] items = this.getDataSources().values().toArray(); for (Object item : items) { diff --git a/src/test/java/com/alibaba/druid/bvt/pool/ha/CobarDataSourceTest.java b/src/test/java/com/alibaba/druid/bvt/pool/ha/CobarDataSourceTest.java index efa8612d1a..5a11a058de 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/ha/CobarDataSourceTest.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/ha/CobarDataSourceTest.java @@ -32,10 +32,17 @@ import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.ha.cobar.CobarConfigLoader; import com.alibaba.druid.pool.ha.cobar.CobarDataSource; import com.alibaba.druid.pool.ha.cobar.CobarFailureDetecter; +import com.alibaba.druid.stat.DruidDataSourceStatManager; import com.alibaba.druid.support.json.JSONUtils; +import com.alibaba.druid.util.JdbcUtils; public class CobarDataSourceTest extends TestCase { - + protected void setUp() throws Exception { + for (DruidDataSource item : DruidDataSourceStatManager.getDruidDataSourceInstances()) { + JdbcUtils.close(item); + } + } + public void test_cobarDataSource() throws Exception { String url = "jdbc:cobar://127.0.0.1:8080/druid"; diff --git a/src/test/java/com/alibaba/druid/bvt/pool/ha/HADataSourceTest.java b/src/test/java/com/alibaba/druid/bvt/pool/ha/HADataSourceTest.java index fac663bb9e..b8e022eb82 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/ha/HADataSourceTest.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/ha/HADataSourceTest.java @@ -27,6 +27,7 @@ import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.ha.HADataSource; import com.alibaba.druid.pool.ha.MultiDataSourceStatement; import com.alibaba.druid.stat.DruidDataSourceStatManager; +import com.alibaba.druid.util.JdbcUtils; public class HADataSourceTest extends TestCase { @@ -36,6 +37,10 @@ public class HADataSourceTest extends TestCase { private HADataSource dataSourceHA; protected void setUp() throws Exception { + for (DruidDataSource item : DruidDataSourceStatManager.getDruidDataSourceInstances()) { + JdbcUtils.close(item); + } + Assert.assertEquals(0, DruidDataSourceStatManager.getInstance().getDataSourceList().size()); dataSourceA = new DruidDataSource(); diff --git a/src/test/java/com/alibaba/druid/bvt/pool/ha/HADataSourceTest2.java b/src/test/java/com/alibaba/druid/bvt/pool/ha/HADataSourceTest2.java index bea5f37e0e..cf863b5122 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/ha/HADataSourceTest2.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/ha/HADataSourceTest2.java @@ -25,6 +25,7 @@ import com.alibaba.druid.mock.MockConnection; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.ha.HADataSource; import com.alibaba.druid.stat.DruidDataSourceStatManager; +import com.alibaba.druid.util.JdbcUtils; public class HADataSourceTest2 extends TestCase { @@ -37,6 +38,9 @@ public class HADataSourceTest2 extends TestCase { private String SLAVE_URL = "jdbc:mock:slave"; protected void setUp() throws Exception { + for (DruidDataSource item : DruidDataSourceStatManager.getDruidDataSourceInstances()) { + JdbcUtils.close(item); + } Assert.assertEquals(0, DruidDataSourceStatManager.getInstance().getDataSourceList().size()); dataSourceA = new DruidDataSource(); diff --git a/src/test/java/com/alibaba/druid/bvt/pool/ha/MultiDataSourceTest.java b/src/test/java/com/alibaba/druid/bvt/pool/ha/MultiDataSourceTest.java index 4dce6e35d5..d29a28aa42 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/ha/MultiDataSourceTest.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/ha/MultiDataSourceTest.java @@ -18,10 +18,12 @@ package com.alibaba.druid.bvt.pool.ha; import junit.framework.TestCase; import com.alibaba.druid.pool.ha.MultiDataSource; +import com.alibaba.druid.util.JdbcUtils; public class MultiDataSourceTest extends TestCase { public void test_0 () throws Exception { MultiDataSource multiDataSource = new MultiDataSource(); + multiDataSource.close(); } }