Author: mreutegg
Date: Mon Feb 20 14:03:08 2017
New Revision: 1783763

URL: http://svn.apache.org/viewvc?rev=1783763&view=rev
Log:
OAK-5651: java.lang.IllegalStateException logged when migrating Segment to 
Document

Merge revisions 1783731,1783733,1783742 from trunk

Modified:
    jackrabbit/oak/branches/1.6/   (props changed)
    
jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalEntry.java
    
jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoaderTest.java
    
jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/JournalEntryTest.java

Propchange: jackrabbit/oak/branches/1.6/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Feb 20 14:03:08 2017
@@ -1,3 +1,3 @@
 /jackrabbit/oak/branches/1.0:1665962
-/jackrabbit/oak/trunk:1781068,1781075,1781248,1781386,1781846,1781907,1782000,1782029,1782196,1782447,1782770,1782945,1782973,1782990,1783061,1783066,1783089,1783104-1783105,1783619
+/jackrabbit/oak/trunk:1781068,1781075,1781248,1781386,1781846,1781907,1782000,1782029,1782196,1782447,1782770,1782945,1782973,1782990,1783061,1783066,1783089,1783104-1783105,1783619,1783731,1783733,1783742
 /jackrabbit/trunk:1345480

Modified: 
jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalEntry.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalEntry.java?rev=1783763&r1=1783762&r2=1783763&view=diff
==============================================================================
--- 
jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalEntry.java
 (original)
+++ 
jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalEntry.java
 Mon Feb 20 14:03:08 2017
@@ -69,7 +69,7 @@ public final class JournalEntry extends
 
     private static final String CHANGE_SET = "_cs";
 
-    private static final String BRANCH_COMMITS = "_bc";
+    static final String BRANCH_COMMITS = "_bc";
 
     public static final String MODIFIED = "_modified";
 
@@ -393,6 +393,9 @@ public final class JournalEntry extends
     }
 
     void branchCommit(@Nonnull Iterable<Revision> revisions) {
+        if (!revisions.iterator().hasNext()) {
+            return;
+        }
         String branchCommits = (String) get(BRANCH_COMMITS);
         if (branchCommits == null) {
             branchCommits = "";
@@ -469,7 +472,9 @@ public final class JournalEntry extends
         String bc = (String) get(BRANCH_COMMITS);
         if (bc != null) {
             for (String id : bc.split(",")) {
-                ids.add(id);
+                if (id.length() != 0) {
+                    ids.add(id);
+                }
             }
         }
         return new Iterable<JournalEntry>() {

Modified: 
jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoaderTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoaderTest.java?rev=1783763&r1=1783762&r2=1783763&view=diff
==============================================================================
--- 
jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoaderTest.java
 (original)
+++ 
jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoaderTest.java
 Mon Feb 20 14:03:08 2017
@@ -28,6 +28,7 @@ import com.google.common.collect.Sets;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.cache.CacheStats;
 import org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore;
+import org.apache.jackrabbit.oak.plugins.document.util.Utils;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
 import org.apache.jackrabbit.oak.spi.commit.EmptyHook;
 import org.apache.jackrabbit.oak.spi.state.DefaultNodeStateDiff;
@@ -325,6 +326,26 @@ public class JournalDiffLoaderTest {
                 journalQueryCounter.get() > 0);
     }
 
+    @Test
+    public void emptyBranchCommit() throws Exception {
+        DocumentNodeStore ns = builderProvider.newBuilder()
+                .setAsyncDelay(0).disableBranches().getNodeStore();
+        DocumentStore store = ns.getDocumentStore();
+        DocumentNodeState before = ns.getRoot();
+        String id = Utils.getIdFromPath("/node-0");
+        NodeBuilder builder = ns.getRoot().builder();
+        int i = 0;
+        while (store.find(Collection.NODES, id) == null) {
+            NodeBuilder child = builder.child("node-" + i++);
+            for (int j = 0; j < 20; j++) {
+                child.setProperty("p-" + j, "value");
+            }
+        }
+        merge(ns, builder);
+        DocumentNodeState after = ns.getRoot();
+        new JournalDiffLoader(before, after, ns).call();
+    }
+
     private static CacheStats getMemoryDiffStats(DocumentNodeStore ns) {
         for (CacheStats cs : ns.getDiffCache().getStats()) {
             if (cs.getName().equals("Document-MemoryDiff")) {

Modified: 
jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/JournalEntryTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/JournalEntryTest.java?rev=1783763&r1=1783762&r2=1783763&view=diff
==============================================================================
--- 
jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/JournalEntryTest.java
 (original)
+++ 
jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/JournalEntryTest.java
 Mon Feb 20 14:03:08 2017
@@ -356,6 +356,16 @@ public class JournalEntryTest {
         assertTrue("Incorrect hasChanges", entry.hasChanges());
     }
 
+    @Test
+    public void emptyBranchCommit() {
+        DocumentStore store = new MemoryDocumentStore();
+        JournalEntry entry = JOURNAL.newDocument(store);
+
+        entry.branchCommit(Collections.<Revision>emptyList());
+        assertFalse(entry.getBranchCommits().iterator().hasNext());
+        assertNull(entry.get(JournalEntry.BRANCH_COMMITS));
+    }
+
     private static void addRandomPaths(java.util.Collection<String> paths) 
throws IOException {
         paths.add("/");
         Random random = new Random(42);


Reply via email to