[infinispan-commits] Infinispan SVN: r2459 - in branches/4.2.x/core/src/main/java/org/infinispan: statetransfer and 1 other directory.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Fri Oct 1 05:50:49 EDT 2010


Author: manik.surtani at jboss.com
Date: 2010-10-01 05:50:49 -0400 (Fri, 01 Oct 2010)
New Revision: 2459

Modified:
   branches/4.2.x/core/src/main/java/org/infinispan/config/Configuration.java
   branches/4.2.x/core/src/main/java/org/infinispan/statetransfer/StateTransferManagerImpl.java
Log:
[ISPN-661] (Make the timeout values for statetransfer flush configurable)

Modified: branches/4.2.x/core/src/main/java/org/infinispan/config/Configuration.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/config/Configuration.java	2010-09-30 14:08:13 UTC (rev 2458)
+++ branches/4.2.x/core/src/main/java/org/infinispan/config/Configuration.java	2010-10-01 09:50:49 UTC (rev 2459)
@@ -458,6 +458,18 @@
       setStateRetrievalTimeout(timeUnit.toMillis(stateRetrievalTimeout));
    }
 
+   public void setStateRetrievalLogFlushTimeout(long logFlushTimeout) {
+      this.clustering.stateRetrieval.setLogFlushTimeout(logFlushTimeout);
+   }
+
+   public void setStateRetrievalLogFlushTimeout(long logFlushTimeout, TimeUnit timeUnit) {
+      this.clustering.stateRetrieval.setLogFlushTimeout(timeUnit.toMillis(logFlushTimeout));
+   }
+
+   public void setStateRetrievalMaxNonProgressingLogWrites(int maxNonProgressingLogWrites) {
+      this.clustering.stateRetrieval.setMaxNonProgressingLogWrites(maxNonProgressingLogWrites);
+   }
+
    public void setStateRetrievalInitialRetryWaitTime(long initialRetryWaitTime) {
       clustering.stateRetrieval.setInitialRetryWaitTime(initialRetryWaitTime);
    }
@@ -640,6 +652,14 @@
       return clustering.stateRetrieval.numRetries;
    }
 
+   public int getStateRetrievalMaxNonProgressingLogWrites() {
+      return clustering.stateRetrieval.maxNonProgressingLogWrites;
+   }
+
+   public long getStateRetrievalLogFlushTimeout() {
+      return clustering.stateRetrieval.logFlushTimeout;
+   }
+
    public boolean isUseLazyDeserialization() {
       return lazyDeserialization.enabled;
    }
@@ -1477,6 +1497,12 @@
       /** @configRef desc="Number of state retrieval retries before giving up and aborting startup."*/
       protected Integer numRetries = 5;
 
+      /** @configRef desc="This is the maximum amount of time to run a cluster-wide flush, to allow for syncing of transaction logs." **/
+      protected Long logFlushTimeout = 60000L;
+
+      /** @configRef desc="This is the maximum number of non-progressing transaction log writes after which a brute-force flush approach is resorted to, to synchronize transaction logs." **/
+      protected Integer maxNonProgressingLogWrites = 100;
+
       @XmlAttribute
       public void setFetchInMemoryState(Boolean fetchInMemoryState) {
          testImmutability("fetchInMemoryState");
@@ -1513,6 +1539,18 @@
          this.timeout = timeout;
       }
 
+      @XmlAttribute
+      public void setLogFlushTimeout(Long logFlushTimeout) {
+         testImmutability("logFlushTimeout");
+         this.logFlushTimeout = logFlushTimeout;
+      }
+
+      @XmlAttribute
+      public void setMaxNonProgressingLogWrites(Integer maxNonProgressingLogWrites) {
+         testImmutability("maxNonProgressingLogWrites");
+         this.maxNonProgressingLogWrites = maxNonProgressingLogWrites;
+      }
+
       public void accept(ConfigurationBeanVisitor v) {
          v.visitStateRetrievalType(this);
       }

Modified: branches/4.2.x/core/src/main/java/org/infinispan/statetransfer/StateTransferManagerImpl.java
===================================================================
--- branches/4.2.x/core/src/main/java/org/infinispan/statetransfer/StateTransferManagerImpl.java	2010-09-30 14:08:13 UTC (rev 2458)
+++ branches/4.2.x/core/src/main/java/org/infinispan/statetransfer/StateTransferManagerImpl.java	2010-10-01 09:50:49 UTC (rev 2459)
@@ -84,6 +84,8 @@
    private static final Byte DELIMITER = (byte) 123;
 
    boolean transientState, persistentState, alwaysProvideTransientState;
+   int maxNonProgressingLogWrites;
+   long flushTimeout;
    volatile boolean needToUnblockRPC = false;
    volatile Address stateSender;
 
@@ -114,6 +116,8 @@
       transientState = configuration.isFetchInMemoryState();
       alwaysProvideTransientState = configuration.isAlwaysProvideInMemoryState();
       persistentState = cs != null && clm.isEnabled() && clm.isFetchPersistentState() && !clm.isShared();
+      maxNonProgressingLogWrites = configuration.getStateRetrievalMaxNonProgressingLogWrites();
+      flushTimeout = configuration.getStateRetrievalLogFlushTimeout();
 
       if (transientState || persistentState) {
          long startTime = 0;
@@ -176,10 +180,6 @@
    }
 
    private void generateTransactionLog(ObjectOutput oo) throws Exception {
-      // todo this should be configurable
-      int maxNonProgressingLogWrites = 100;
-      int flushTimeout = 60000;
-
       DistributedSync distributedSync = rpcManager.getTransport().getDistributedSync();
 
       try {



More information about the infinispan-commits mailing list