Author: chetanm
Date: Tue Apr 14 04:10:10 2015
New Revision: 1673351
URL: http://svn.apache.org/r1673351
Log:
OAK-2759 - se of Empty commit causes deserialization issue in LocalDiffCache
leading to cache corruption
Use an empty ConsolidatedDiff if string is empty
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCache.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCacheTest.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCache.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCache.java?rev=1673351&r1=1673350&r2=1673351&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCache.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCache.java
Tue Apr 14 04:10:10 2015
@@ -19,6 +19,7 @@
package org.apache.jackrabbit.oak.plugins.document;
+import java.util.Collections;
import java.util.Map;
import javax.annotation.Nonnull;
@@ -123,6 +124,9 @@ public class LocalDiffCache implements D
}
public static ConsolidatedDiff fromString(String value){
+ if (value.isEmpty()){
+ return new ConsolidatedDiff(Collections.<String,
String>emptyMap(), 0);
+ }
return new ConsolidatedDiff(splitter.split(value), 0);
}
@@ -151,6 +155,7 @@ public class LocalDiffCache implements D
return changes.get(path);
}
+ @SuppressWarnings("RedundantIfStatement")
@Override
public boolean equals(Object o) {
if (this == o) return true;
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCacheTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCacheTest.java?rev=1673351&r1=1673350&r2=1673351&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCacheTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCacheTest.java
Tue Apr 14 04:10:10 2015
@@ -19,6 +19,7 @@
package org.apache.jackrabbit.oak.plugins.document;
+import java.util.HashMap;
import java.util.Map;
import java.util.Set;
@@ -84,6 +85,15 @@ public class LocalDiffCacheTest {
store.dispose();
}
+ @Test
+ public void emptyDiff() throws Exception{
+ Map<String, String> changes = new HashMap<String, String>();
+ ConsolidatedDiff diff = new ConsolidatedDiff(changes, 100);
+ String asString = diff.asString();
+ ConsolidatedDiff diff2 = ConsolidatedDiff.fromString(asString);
+ assertEquals(diff, diff2);
+ }
+
private LocalDiffCache getLocalDiffCache(){
return (LocalDiffCache) store.getLocalDiffCache();
}