Skip to content

Commit f1b3ed3

Browse files
author
chengyitian
committed
AJ-712: add 'tryReconnectNums' for pool;
1 parent 394f48b commit f1b3ed3

File tree

3 files changed

+22
-7
lines changed

3 files changed

+22
-7
lines changed

src/com/xxdb/DBConnection.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -726,9 +726,12 @@ public boolean connect(String hostName, int port, String userId, String password
726726
}
727727

728728
public boolean connect(String hostName, int port, String userId, String password, String initialScript, boolean enableHighAvailability, String[] highAvailabilitySites, boolean reconnect, boolean enableLoadBalance, int tryReconnectNums) throws IOException {
729-
if (tryReconnectNums < 0)
730-
throw new RuntimeException("The param 'tryReconnectNums' cannot less than 0.");
731-
this.tryReconnectNums = tryReconnectNums;
729+
if (tryReconnectNums <= 0) {
730+
this.tryReconnectNums = -1;
731+
log.warn("If the param 'tryReconnectNums' less than or equal to 0, when reconnect will be unlimited attempts.");
732+
} else {
733+
this.tryReconnectNums = tryReconnectNums;
734+
}
732735

733736
return connect(hostName, port, userId, password, initialScript, enableHighAvailability, highAvailabilitySites, reconnect, enableLoadBalance);
734737
}

src/com/xxdb/SimpleDBConnectionPool.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ public class SimpleDBConnectionPool {
3333
private boolean enableHighAvailability;
3434
private String[] highAvailabilitySites;
3535
private boolean reconnect = true;
36+
private int tryReconnectNums;
37+
3638
private static final Logger log = LoggerFactory.getLogger(DBConnection.class);
3739

3840
private final Queue<PoolEntry> poolEntries = new ConcurrentLinkedQueue<>();
@@ -57,6 +59,7 @@ public SimpleDBConnectionPool(SimpleDBConnectionPoolConfig simpleDBConnectionPoo
5759
this.loadBalance = simpleDBConnectionPoolConfig.isLoadBalance();
5860
this.enableHighAvailability = simpleDBConnectionPoolConfig.isEnableHighAvailability();
5961
this.highAvailabilitySites = simpleDBConnectionPoolConfig.getHighAvailabilitySites();
62+
this.tryReconnectNums = simpleDBConnectionPoolConfig.getTryReconnectNums();
6063

6164
initPool();
6265
}
@@ -65,7 +68,7 @@ private void initPool() {
6568
for (int i = 0; i < minimumPoolSize; i++) {
6669
try {
6770
PoolEntry poolEntry = new PoolEntry(useSSL, compress, usePython, String.format("DolphinDBConnection_%d", i + 1));
68-
if (poolEntry.entryConnect(hostName, port, userId, password, initialScript, enableHighAvailability, highAvailabilitySites, reconnect, loadBalance)) {
71+
if (poolEntry.entryConnect(hostName, port, userId, password, initialScript, enableHighAvailability, highAvailabilitySites, reconnect, loadBalance, tryReconnectNums)) {
6972
poolEntries.add(poolEntry);
7073
} else {
7174
throw new RuntimeException(String.format("Connection %s connect failure.", poolEntry.connectionName));
@@ -109,7 +112,7 @@ public DBConnection getConnection() {
109112
if (poolEntries.size() < maximumPoolSize) {
110113
try {
111114
PoolEntry poolEntry = new PoolEntry(useSSL, compress, usePython, String.format("DolphinDBConnection_%d", poolEntries.size() + 1));
112-
if (poolEntry.entryConnect(hostName, port, userId, password, initialScript, enableHighAvailability, highAvailabilitySites, reconnect, loadBalance)) {
115+
if (poolEntry.entryConnect(hostName, port, userId, password, initialScript, enableHighAvailability, highAvailabilitySites, reconnect, loadBalance, tryReconnectNums)) {
113116
poolEntries.add(poolEntry);
114117
if (poolEntry.inUse.compareAndSet(false, true)) {
115118
return poolEntry;
@@ -216,8 +219,8 @@ class PoolEntry extends DBConnection {
216219
this.connectionName = connectionName;
217220
}
218221

219-
private boolean entryConnect(String hostName, int port, String userId, String password, String initialScript, boolean enableHighAvailability, String[] highAvailabilitySites, boolean reconnect, boolean enableLoadBalance) throws IOException {
220-
boolean isConnected = super.connect(hostName, port, userId, password, initialScript, enableHighAvailability, highAvailabilitySites, reconnect, enableLoadBalance);
222+
private boolean entryConnect(String hostName, int port, String userId, String password, String initialScript, boolean enableHighAvailability, String[] highAvailabilitySites, boolean reconnect, boolean enableLoadBalance, int tryReconnectNums) throws IOException {
223+
boolean isConnected = super.connect(hostName, port, userId, password, initialScript, enableHighAvailability, highAvailabilitySites, reconnect, enableLoadBalance, tryReconnectNums);
221224
if (isConnected) {
222225
this.lastUsedTime = System.currentTimeMillis();
223226
}

src/com/xxdb/SimpleDBConnectionPoolConfig.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public class SimpleDBConnectionPoolConfig {
2626
private boolean loadBalance = false;
2727
private boolean enableHighAvailability = false;
2828
private String[] highAvailabilitySites = null;
29+
private int tryReconnectNums = -1;
2930

3031
private static final Logger log = LoggerFactory.getLogger(DBConnection.class);
3132

@@ -162,6 +163,14 @@ public void setHighAvailabilitySites(String[] highAvailabilitySites) {
162163
this.highAvailabilitySites = highAvailabilitySites;
163164
}
164165

166+
public void setTryReconnectNums(int tryReconnectNums) {
167+
this.tryReconnectNums = tryReconnectNums;
168+
}
169+
170+
public int getTryReconnectNums() {
171+
return tryReconnectNums;
172+
}
173+
165174
/**
166175
* add param check when pool init start.
167176
*/

0 commit comments

Comments
 (0)