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);