[infinispan-commits] Infinispan SVN: r1450 - in trunk/core/src/main/java/org/infinispan: distribution and 1 other directory.
infinispan-commits at lists.jboss.org
infinispan-commits at lists.jboss.org
Thu Feb 4 09:35:48 EST 2010
Author: manik.surtani at jboss.com
Date: 2010-02-04 09:35:48 -0500 (Thu, 04 Feb 2010)
New Revision: 1450
Modified:
trunk/core/src/main/java/org/infinispan/config/Configuration.java
trunk/core/src/main/java/org/infinispan/distribution/JoinTask.java
Log:
Better retry handling
Modified: trunk/core/src/main/java/org/infinispan/config/Configuration.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/config/Configuration.java 2010-02-04 14:28:44 UTC (rev 1449)
+++ trunk/core/src/main/java/org/infinispan/config/Configuration.java 2010-02-04 14:35:48 UTC (rev 1450)
@@ -45,6 +45,8 @@
import java.util.List;
import java.util.concurrent.TimeUnit;
+import static java.util.concurrent.TimeUnit.MINUTES;
+
/**
* Encapsulates the configuration of a Cache.
*
@@ -1467,10 +1469,10 @@
protected Integer numOwners=2;
/** @configRef desc="Future flag. Currenly unused." */
- protected Long rehashWait=60000L;
+ protected Long rehashWait = MINUTES.toMillis(1);
/** @configRef desc="Rehashing timeout" */
- protected Long rehashRpcTimeout=60 * 1000 * 10L;
+ protected Long rehashRpcTimeout = MINUTES.toMillis(10);
/** @configRef desc="If false, no rebalancing or rehashing will take place when a new node joins the cluster or
* a node leaves." **/
Modified: trunk/core/src/main/java/org/infinispan/distribution/JoinTask.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/distribution/JoinTask.java 2010-02-04 14:28:44 UTC (rev 1449)
+++ trunk/core/src/main/java/org/infinispan/distribution/JoinTask.java 2010-02-04 14:35:48 UTC (rev 1450)
@@ -14,6 +14,7 @@
import org.infinispan.remoting.rpc.RpcManager;
import org.infinispan.remoting.transport.Address;
import org.infinispan.util.Util;
+import org.infinispan.util.concurrent.TimeoutException;
import org.infinispan.util.logging.Log;
import org.infinispan.util.logging.LogFactory;
@@ -79,12 +80,20 @@
long giveupTime = System.currentTimeMillis() + maxWaitTime;
do {
if (log.isTraceEnabled()) log.trace("Requesting old consistent hash from coordinator");
- List<Response> resp = rpcManager.invokeRemotely(coordinator(),
- cf.buildRehashControlCommand(JOIN_REQ, self),
+ List<Response> resp;
+ List<Address> addresses;
+ try {
+ resp = rpcManager.invokeRemotely(coordinator(), cf.buildRehashControlCommand(JOIN_REQ, self),
SYNCHRONOUS, configuration.getRehashRpcTimeout(), true);
- List<Address> addresses = parseResponses(resp);
+ addresses = parseResponses(resp);
+ if (log.isDebugEnabled()) log.debug("Retrieved old consistent hash address list {0}", addresses);
+ } catch (TimeoutException te) {
+ // timed out waiting for responses; retry!
+ resp = null;
+ addresses = null;
+ if (log.isDebugEnabled()) log.debug("Timed out waiting for responses.");
+ }
- if (log.isDebugEnabled()) log.debug("Retrieved old consistent hash address list {0}", addresses);
if (addresses == null) {
long time = rand.nextInt((int) (maxSleepTime - minSleepTime) / 10);
time = (time * 10) + minSleepTime;
More information about the infinispan-commits
mailing list