ha support

This commit is contained in:
wenshao
2011-12-19 14:34:42 +08:00
parent 5cd417ad11
commit b76f30ddff
6 changed files with 1247 additions and 1247 deletions
File diff suppressed because it is too large Load Diff
@@ -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.restart();
}
}
@@ -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() {
@@ -40,6 +40,14 @@ public class HADataSource extends MultiDataSource implements HADataSourceMBean,
public DataSourceHolder getMaster() {
return master;
}
public void restartMaster() {
this.restartDataSource("master");
}
public void restartSlave() {
this.restartDataSource("slave");
}
public void setMaster(DruidDataSource master) {
this.setMaster(new DataSourceHolder(master));
@@ -20,4 +20,8 @@ public interface HADataSourceMBean extends MultiDataSourceMBean {
void switchMasterSlave();
void resetStat();
void restartMaster();
void restartSlave();
}
@@ -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);
}