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