Author: yurize
Date: Tue Aug 21 17:34:15 2012
New Revision: 1375678

URL: http://svn.apache.org/viewvc?rev=1375678&view=rev
Log:
Fixes WAVE-312 - Not saving editions when concurrent editions in same
wave.
https://reviews.apache.org/r/6474

Modified:
    
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/DeltaStoreBasedWaveletState.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=1375678&r1=1375677&r2=1375678&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
 Tue Aug 21 17:34:15 2012
@@ -347,21 +347,20 @@ class DeltaStoreBasedWaveletState implem
         "Start version %s should be smaller than end version %s", 
startVersion, endVersion);
     // The history deltas can be either in the memory - waiting to be 
persisted,
     // or already persisted. We take both and merge into one list.
-    final NavigableMap<HashedVersion, TransformedWaveletDelta> cachedDeltas = 
Maps.newTreeMap();
-    cachedDeltas.putAll(transformedDeltas.subMap(startVersion, true, 
endVersion, false));
-    ImmutableList<WaveletDeltaRecord> persistedDeltas;
-    try {
-      persistedDeltas =
-          readDeltasInRange(deltasAccess, startVersion.getVersion(), 
endVersion.getVersion());
-    } catch (IOException e) {
-      throw new RuntimeIOException(e);
-    }
     NavigableMap<HashedVersion, TransformedWaveletDelta> 
allTransformedDeltasMap =
-        Maps.newTreeMap();
-    allTransformedDeltasMap.putAll(cachedDeltas);
-    for (WaveletDeltaRecord d : persistedDeltas) {
-      allTransformedDeltasMap.put(d.getAppliedAtVersion(), 
d.getTransformedDelta());
+        Maps.newTreeMap(transformedDeltas.subMap(startVersion, true, 
endVersion, false));
+    if (lastPersistedVersion.get().compareTo(startVersion) > 0) {
+      try {
+        ImmutableList<WaveletDeltaRecord> persistedDeltas =
+            readDeltasInRange(deltasAccess, startVersion.getVersion(), 
endVersion.getVersion());
+        for (WaveletDeltaRecord d : persistedDeltas) {
+          allTransformedDeltasMap.put(d.getAppliedAtVersion(), 
d.getTransformedDelta());
+        }
+      } catch (IOException e) {
+        throw new RuntimeIOException(e);
+      }
     }
+
     DeltaSequence nowDeltaSequence;
     if (!allTransformedDeltasMap.isEmpty()
         && allTransformedDeltasMap.firstKey().equals(startVersion)
@@ -413,27 +412,21 @@ class DeltaStoreBasedWaveletState implem
 
   @Override
   public Collection<ByteStringMessage<ProtocolAppliedWaveletDelta>> 
getAppliedDeltaHistory(
-      HashedVersion startVersion, HashedVersion endVersion) {
-    Preconditions.checkArgument(startVersion.getVersion() < 
endVersion.getVersion());
-    return (isDeltaBoundary(startVersion) && isDeltaBoundary(endVersion))
-        ? appliedDeltas.subMap(startVersion, endVersion).values()
-        : null;
-  }
-
-  public Collection<ByteStringMessage<ProtocolAppliedWaveletDelta>> 
getAppliedDeltaHistory1(
       final HashedVersion startVersion, final HashedVersion endVersion) {
     Preconditions.checkArgument(startVersion.getVersion() < 
endVersion.getVersion());
     final Set<ByteStringMessage<ProtocolAppliedWaveletDelta>> allDeltas = 
Sets.newHashSet();
     allDeltas.addAll(appliedDeltas.subMap(startVersion, endVersion).values());
-    ImmutableList<WaveletDeltaRecord> persistedDeltas;
-    try {
-      persistedDeltas =
-          readDeltasInRange(deltasAccess, startVersion.getVersion(), 
endVersion.getVersion());
-    } catch (IOException e) {
-      throw new RuntimeIOException(e);
-    }
-    for (WaveletDeltaRecord d : persistedDeltas) {
-      allDeltas.add(d.getAppliedDelta());
+    if (lastPersistedVersion.get().compareTo(startVersion) > 0) {
+      ImmutableList<WaveletDeltaRecord> persistedDeltas;
+      try {
+        persistedDeltas =
+            readDeltasInRange(deltasAccess, startVersion.getVersion(), 
endVersion.getVersion());
+      } catch (IOException e) {
+        throw new RuntimeIOException(e);
+      }
+      for (WaveletDeltaRecord d : persistedDeltas) {
+        allDeltas.add(d.getAppliedDelta());
+      }
     }
     Collection<ByteStringMessage<ProtocolAppliedWaveletDelta>> deltaCollection 
=
         Lists.newArrayList();
@@ -442,7 +435,7 @@ class DeltaStoreBasedWaveletState implem
         deltaCollection.add(appliedDelta);
       }
     }
-    return deltaCollection;
+    return deltaCollection.isEmpty() ? null : deltaCollection;
   }
 
   @Override


Reply via email to