mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
ha support
This commit is contained in:
@@ -122,6 +122,11 @@ public class DruidDataSource extends DruidAbstractDataSource implements
|
||||
public void setResetStatEnable(boolean resetStatEnable) {
|
||||
this.resetStatEnable = resetStatEnable;
|
||||
}
|
||||
|
||||
public void restart() {
|
||||
this.close();
|
||||
this.inited = false;
|
||||
}
|
||||
|
||||
public void resetStat() {
|
||||
if (!resetStatEnable) {
|
||||
|
||||
@@ -21,7 +21,7 @@ public class DataSourceHolder implements Closeable {
|
||||
this.dataSource = dataSource;
|
||||
}
|
||||
|
||||
public void resetStat() {
|
||||
public void resetState() {
|
||||
connectCount.set(0);
|
||||
}
|
||||
|
||||
@@ -66,4 +66,8 @@ public class DataSourceHolder implements Closeable {
|
||||
public void close() {
|
||||
dataSource.close();
|
||||
}
|
||||
|
||||
public void restart() {
|
||||
dataSource.resetStat();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,8 +25,8 @@ public class HADataSource extends MultiDataSource implements HADataSourceMBean,
|
||||
public void resetStat() {
|
||||
super.resetStat();
|
||||
|
||||
master.resetStat();
|
||||
slave.resetStat();
|
||||
master.resetState();
|
||||
slave.resetState();
|
||||
}
|
||||
|
||||
public long getMasterConnectCount() {
|
||||
|
||||
@@ -181,6 +181,10 @@ public abstract class MultiDataSource extends DataSourceAdapter implements Multi
|
||||
public void handleNotAwailableDatasource(DataSourceHolder dataSourceHolder) {
|
||||
dataSourceHolder.setEnable(false);
|
||||
}
|
||||
|
||||
public String[] getDataSourceNames() {
|
||||
return this.dataSources.keySet().toArray(new String[this.dataSources.size()]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDbType() {
|
||||
@@ -216,6 +220,16 @@ public abstract class MultiDataSource extends DataSourceAdapter implements Multi
|
||||
public long createTransactionId() {
|
||||
return transactionIdSeed.incrementAndGet();
|
||||
}
|
||||
|
||||
public boolean restartDataSource(String name) {
|
||||
DataSourceHolder holder = this.getDataSources().get(name);
|
||||
if (holder != null) {
|
||||
holder.restart();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
class FailureDetectTask implements Runnable {
|
||||
|
||||
|
||||
@@ -3,4 +3,8 @@ package com.alibaba.druid.pool.ha;
|
||||
|
||||
public interface MultiDataSourceMBean {
|
||||
void failureDetect();
|
||||
|
||||
String[] getDataSourceNames();
|
||||
|
||||
boolean restartDataSource(String name);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user