[infinispan-commits] Infinispan SVN: r1086 - in trunk/core/src: main/java/org/infinispan/distribution and 1 other directories.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Fri Oct 30 13:25:51 EDT 2009


Author: manik.surtani at jboss.com
Date: 2009-10-30 13:25:51 -0400 (Fri, 30 Oct 2009)
New Revision: 1086

Modified:
   trunk/core/src/main/java/org/infinispan/config/Configuration.java
   trunk/core/src/main/java/org/infinispan/distribution/JoinTask.java
   trunk/core/src/test/java/org/infinispan/distribution/BaseDistFunctionalTest.java
Log:
Use a different cfg element for enabling/disabling rehashing

Modified: trunk/core/src/main/java/org/infinispan/config/Configuration.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/config/Configuration.java	2009-10-30 15:37:59 UTC (rev 1085)
+++ trunk/core/src/main/java/org/infinispan/config/Configuration.java	2009-10-30 17:25:51 UTC (rev 1086)
@@ -442,6 +442,10 @@
    public void setNumOwners(int numOwners) {
       this.clustering.hash.setNumOwners(numOwners);
    }
+
+   public void setRehashEnabled(boolean rehashEnabled) {
+      this.clustering.hash.setRehashEnabled(rehashEnabled);
+   }
  
    public void setRehashWaitTime(long rehashWaitTime) {
       this.clustering.hash.setRehashWait(rehashWaitTime);
@@ -567,6 +571,10 @@
       return clustering.hash.numOwners;
    }
 
+   public boolean isRehashEnabled() {
+      return clustering.hash.rehashEnabled;
+   }
+
    public long getRehashWaitTime() {
       return clustering.hash.rehashWait;
    }
@@ -692,6 +700,9 @@
    }  
 
    public void assertValid() throws ConfigurationException {
+      // certain combinations are illegal, such as state transfer + DIST
+      if (clustering.mode.isDistributed() && clustering.stateRetrieval.fetchInMemoryState)
+         throw new ConfigurationException("Cache cannot use DISTRIBUTION mode and have fetchInMemoryState set to true");
    }
 
    public boolean isOnePhaseCommit() {
@@ -1402,7 +1413,10 @@
       protected Long rehashWait=60000L;
       
       /** @configRef desc="Rehashing timeout" */
-      protected Long rehashRpcTimeout=60 * 1000 * 10L;     
+      protected Long rehashRpcTimeout=60 * 1000 * 10L;
+
+      /** @configRef desc="If false, no rebalancing or rehashing will take place when a new node joins the cluster or a node leaves.  Defaults to true." **/
+      protected Boolean rehashEnabled=true;
       
       @XmlAttribute(name="class")
       public void setConsistentHashClass(String consistentHashClass) {
@@ -1432,6 +1446,12 @@
          this.rehashRpcTimeout = rehashRpcTimeout;
       }
 
+      @XmlAttribute
+      public void setRehashEnabled(Boolean rehashEnabled) {
+         testImmutability("rehashEnabled");
+         this.rehashEnabled = rehashEnabled;
+      }
+
       @Override
       public boolean equals(Object o) {
          if (this == o) return true;
@@ -1445,6 +1465,7 @@
          if (rehashRpcTimeout != null ? !rehashRpcTimeout.equals(hashType.rehashRpcTimeout) : hashType.rehashRpcTimeout != null)
             return false;
          if (rehashWait != null ? !rehashWait.equals(hashType.rehashWait) : hashType.rehashWait != null) return false;
+         if (rehashEnabled != hashType.rehashEnabled) return false;
 
          return true;
       }
@@ -1455,6 +1476,7 @@
          result = 31 * result + (numOwners != null ? numOwners.hashCode() : 0);
          result = 31 * result + (rehashWait != null ? rehashWait.hashCode() : 0);
          result = 31 * result + (rehashRpcTimeout != null ? rehashRpcTimeout.hashCode() : 0);
+         result = 31 * result + (rehashEnabled ? 0 : 1);
          return result;
       }
    }

Modified: trunk/core/src/main/java/org/infinispan/distribution/JoinTask.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/distribution/JoinTask.java	2009-10-30 15:37:59 UTC (rev 1085)
+++ trunk/core/src/main/java/org/infinispan/distribution/JoinTask.java	2009-10-30 17:25:51 UTC (rev 1086)
@@ -102,7 +102,7 @@
          chNew = createConsistentHash(configuration, chOld.getCaches(), self);
          dmi.setConsistentHash(chNew);
          
-         if (configuration.isFetchInMemoryState()) {
+         if (configuration.isRehashEnabled()) {
             // 3.  Enable TX logging
             transactionLogger.enable();
 
@@ -131,7 +131,7 @@
          }
          unlocked = true;
 
-         if (!configuration.isFetchInMemoryState()) {
+         if (!configuration.isRehashEnabled()) {
             rpcManager.broadcastRpcCommand(cf.buildRehashControlCommand(JOIN_REHASH_START, self), true, true);            
          }
          // 10.
@@ -139,7 +139,7 @@
          rpcManager.invokeRemotely(coordinator(), cf.buildRehashControlCommand(JOIN_COMPLETE, self), SYNCHRONOUS,
                                    configuration.getRehashRpcTimeout(), true);
 
-         if (configuration.isFetchInMemoryState()) {
+         if (configuration.isRehashEnabled()) {
             // 11.
             invalidateInvalidHolders(chOld, chNew);
          }

Modified: trunk/core/src/test/java/org/infinispan/distribution/BaseDistFunctionalTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/distribution/BaseDistFunctionalTest.java	2009-10-30 15:37:59 UTC (rev 1085)
+++ trunk/core/src/test/java/org/infinispan/distribution/BaseDistFunctionalTest.java	2009-10-30 17:25:51 UTC (rev 1086)
@@ -41,7 +41,7 @@
    protected void createCacheManagers() throws Throwable {
       cacheName = "dist";
       configuration = getDefaultClusteredConfig(sync ? Configuration.CacheMode.DIST_SYNC : Configuration.CacheMode.DIST_ASYNC, tx);
-      configuration.setFetchInMemoryState(performRehashing);
+      configuration.setRehashEnabled(performRehashing);
       if (!testRetVals) {
          configuration.setUnsafeUnreliableReturnValues(true);
          // we also need to use repeatable read for tests to work when we dont have reliable return values, since the



More information about the infinispan-commits mailing list