ha support

This commit is contained in:
wenshao
2011-12-19 14:29:06 +08:00
parent 5cd417ad11
commit 87ab582fdb
5 changed files with 30 additions and 3 deletions
@@ -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);
}