You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ch...@apache.org on 2015/04/14 06:14:15 UTC

svn commit: r1673353 - in /jackrabbit/oak/branches/1.2: ./ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCache.java oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCacheTest.java

Author: chetanm
Date: Tue Apr 14 04:14:14 2015
New Revision: 1673353

URL: http://svn.apache.org/r1673353
Log:
OAK-2759 - Empty commit causes deserialization issue in LocalDiffCache leading to cache corruption

Merging 1673351

Modified:
    jackrabbit/oak/branches/1.2/   (props changed)
    jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCache.java
    jackrabbit/oak/branches/1.2/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCacheTest.java

Propchange: jackrabbit/oak/branches/1.2/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Apr 14 04:14:14 2015
@@ -1,3 +1,3 @@
 /jackrabbit/oak/branches/1.0:1665962
-/jackrabbit/oak/trunk:1672350,1672468,1672537,1672603,1672834-1672835,1673140
+/jackrabbit/oak/trunk:1672350,1672468,1672537,1672603,1672834-1672835,1673140,1673351
 /jackrabbit/trunk:1345480

Modified: jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCache.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCache.java?rev=1673353&r1=1673352&r2=1673353&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCache.java (original)
+++ jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCache.java Tue Apr 14 04:14:14 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/branches/1.2/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCacheTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCacheTest.java?rev=1673353&r1=1673352&r2=1673353&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCacheTest.java (original)
+++ jackrabbit/oak/branches/1.2/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCacheTest.java Tue Apr 14 04:14:14 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();
     }