diff --git a/src/main/java/com/alibaba/druid/pool/ha/HADataSource.java b/src/main/java/com/alibaba/druid/pool/ha/HADataSource.java index a3d3d23818..a4f166ab95 100644 --- a/src/main/java/com/alibaba/druid/pool/ha/HADataSource.java +++ b/src/main/java/com/alibaba/druid/pool/ha/HADataSource.java @@ -54,10 +54,7 @@ public class HADataSource extends MultiDataSource implements DataSource { assert dataSource != null; if (!dataSource.isEnable()) { - boolean removed = dataSources.remove(dataSource); - if (removed) { - notAvailableDatasources.add(dataSource); - } + handleNotAwailableDatasource(dataSource); continue; } @@ -79,6 +76,13 @@ public class HADataSource extends MultiDataSource implements DataSource { return conn; } } + + void handleNotAwailableDatasource(DruidDataSource dataSource) { + boolean removed = dataSources.remove(dataSource); + if (removed) { + notAvailableDatasources.add(dataSource); + } + } public long getIndexErrorCount() { return indexErrorCount.get(); 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 58904e272d..10ab7c6144 100644 --- a/src/main/java/com/alibaba/druid/pool/ha/MultiDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/ha/MultiDataSource.java @@ -3,6 +3,8 @@ package com.alibaba.druid.pool.ha; import java.sql.Connection; import java.sql.SQLException; import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import com.alibaba.druid.pool.DataSourceAdapter; import com.alibaba.druid.pool.DruidDataSource; @@ -15,8 +17,14 @@ public abstract class MultiDataSource extends DataSourceAdapter { dataSources = new ArrayList(); } - @Override - public Connection getConnection() throws SQLException { - throw new UnsupportedOperationException(); + public List getDataSources() { + return Collections.unmodifiableList(dataSources); } + + public void setDataSources(List dataSources) { + this.dataSources = new ArrayList(dataSources);; + } + + @Override + public abstract Connection getConnection() throws SQLException; }