Author: yurize
Date: Wed Feb  8 20:41:52 2012
New Revision: 1242083

URL: http://svn.apache.org/viewvc?rev=1242083&view=rev
Log:
Fixes issue WAVE-328 by flushing the correct deltas versions. By Andrew 
Kaplanov https://reviews.apache.org/r/3771/

Modified:
    
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/DeltaStoreBasedWaveletState.java
    
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/WaveletContainerImpl.java

Modified: 
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/DeltaStoreBasedWaveletState.java
URL: 
http://svn.apache.org/viewvc/incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/DeltaStoreBasedWaveletState.java?rev=1242083&r1=1242082&r2=1242083&view=diff
==============================================================================
--- 
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/DeltaStoreBasedWaveletState.java
 (original)
+++ 
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/DeltaStoreBasedWaveletState.java
 Wed Feb  8 20:41:52 2012
@@ -159,16 +159,16 @@ class DeltaStoreBasedWaveletState implem
 
   /** The lock that guards access to persistence related state. */
   private Object persistLock = new Object();
-  
+
   /**
    * Indicates the version of the latest appended delta that was already 
requested to be
    * persisted.
    */
   private HashedVersion latestVersionToPersist = null;
-  
+
   /** The persist task that will be executed next. */
   private ListenableFutureTask<Void> nextPersistTask = null;
-  
+
   /**
    * Processes the persist task and checks if there is another task to do when
    * one task is done. In such a case, it writes all waiting to be persisted
@@ -490,10 +490,10 @@ class DeltaStoreBasedWaveletState implem
 
   @Override
   public void flush(HashedVersion version) {
-    transformedDeltas.remove(version);
-    appliedDeltas.remove(version);
+    transformedDeltas.remove(transformedDeltas.lowerKey(version));
+    appliedDeltas.remove(appliedDeltas.lowerKey(version));
     if (LOG.isFineLoggable()) {
-      LOG.fine("Flushed delta " + version);
+      LOG.fine("Flushed deltas up to version " + version);
     }
   }
 

Modified: 
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/WaveletContainerImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/WaveletContainerImpl.java?rev=1242083&r1=1242082&r2=1242083&view=diff
==============================================================================
--- 
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/WaveletContainerImpl.java
 (original)
+++ 
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/WaveletContainerImpl.java
 Wed Feb  8 20:41:52 2012
@@ -48,6 +48,7 @@ import org.waveprotocol.wave.util.loggin
 import java.util.Collection;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
@@ -235,6 +236,13 @@ abstract class WaveletContainerImpl impl
         new Runnable() {
           @Override
           public void run() {
+            try {
+              result.get();
+            } catch (InterruptedException e) {
+              Thread.currentThread().interrupt();
+            } catch (ExecutionException e) {
+              LOG.severe("Version " + version, e);
+            }
             acquireWriteLock();
             try {
               waveletState.flush(version);


Reply via email to