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 am...@apache.org on 2018/09/27 04:47:17 UTC

svn commit: r1842069 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/ oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/ oak-store-composite/src/test/java/org/apache/jackrabbit/oak/composite/

Author: amitj
Date: Thu Sep 27 04:47:17 2018
New Revision: 1842069

URL: http://svn.apache.org/viewvc?rev=1842069&view=rev
Log:
OAK-7779: Ignore copying of namespace index node in InitialContentMigrator

- Ignore copying of /jcr:system/rep:namespaces
- Test case

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/InitialContent.java
    jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/InitialContentMigrator.java
    jackrabbit/oak/trunk/oak-store-composite/src/test/java/org/apache/jackrabbit/oak/composite/InitialContentMigratorTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/InitialContent.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/InitialContent.java?rev=1842069&r1=1842068&r2=1842069&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/InitialContent.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/InitialContent.java Thu Sep 27 04:47:17 2018
@@ -82,10 +82,11 @@ public class InitialContent implements R
                     .setProperty(JCR_PRIMARYTYPE, NT_REP_NODE_TYPES, Type.NAME);
             system.child(VersionConstants.JCR_ACTIVITIES)
                     .setProperty(JCR_PRIMARYTYPE, VersionConstants.REP_ACTIVITIES, Type.NAME);
-
-            Namespaces.setupNamespaces(system);
         }
 
+        NodeBuilder system = builder.getChildNode(JCR_SYSTEM);
+        Namespaces.setupNamespaces(system);
+
         NodeBuilder versionStorage = builder.child(JCR_SYSTEM)
                 .child(JCR_VERSIONSTORAGE);
         if (prePopulateVS && !isInitialized(versionStorage)) {

Modified: jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/InitialContentMigrator.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/InitialContentMigrator.java?rev=1842069&r1=1842068&r2=1842069&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/InitialContentMigrator.java (original)
+++ jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/InitialContentMigrator.java Thu Sep 27 04:47:17 2018
@@ -45,6 +45,7 @@ import java.util.Map;
 import java.util.Set;
 
 import static org.apache.jackrabbit.oak.spi.cluster.ClusterRepositoryInfo.CLUSTER_CONFIG_NODE;
+import static org.apache.jackrabbit.oak.spi.namespace.NamespaceConstants.NAMESPACES_PATH;
 
 public class InitialContentMigrator {
 
@@ -52,7 +53,8 @@ public class InitialContentMigrator {
 
     private static final String CLUSTER_ID = System.getProperty("oak.composite.seed.clusterId", "1");
 
-    private static final Set<String> DEFAULT_IGNORED_PATHS = ImmutableSet.of("/" + CLUSTER_CONFIG_NODE);
+    private static final Set<String> DEFAULT_IGNORED_PATHS = ImmutableSet
+        .of("/" + CLUSTER_CONFIG_NODE, NAMESPACES_PATH);
 
     private static final Logger LOG = LoggerFactory.getLogger(InitialContentMigrator.class);
 

Modified: jackrabbit/oak/trunk/oak-store-composite/src/test/java/org/apache/jackrabbit/oak/composite/InitialContentMigratorTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-composite/src/test/java/org/apache/jackrabbit/oak/composite/InitialContentMigratorTest.java?rev=1842069&r1=1842068&r2=1842069&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-composite/src/test/java/org/apache/jackrabbit/oak/composite/InitialContentMigratorTest.java (original)
+++ jackrabbit/oak/trunk/oak-store-composite/src/test/java/org/apache/jackrabbit/oak/composite/InitialContentMigratorTest.java Thu Sep 27 04:47:17 2018
@@ -16,7 +16,11 @@
  */
 package org.apache.jackrabbit.oak.composite;
 
+import static org.apache.jackrabbit.JcrConstants.JCR_SYSTEM;
 import static org.apache.jackrabbit.oak.spi.cluster.ClusterRepositoryInfo.CLUSTER_CONFIG_NODE;
+import static org.apache.jackrabbit.oak.spi.namespace.NamespaceConstants.NAMESPACES_PATH;
+import static org.apache.jackrabbit.oak.spi.namespace.NamespaceConstants.REP_NAMESPACES;
+import static org.apache.jackrabbit.oak.spi.namespace.NamespaceConstants.REP_NSDATA;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
@@ -29,13 +33,19 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.stream.Collectors;
 
+import org.apache.jackrabbit.oak.InitialContent;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
 import org.apache.jackrabbit.oak.plugins.document.DocumentStore;
 import org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore;
 import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
+import org.apache.jackrabbit.oak.plugins.name.NamespaceEditorProvider;
+import org.apache.jackrabbit.oak.plugins.name.Namespaces;
+import org.apache.jackrabbit.oak.plugins.nodetype.TypeEditorProvider;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
+import org.apache.jackrabbit.oak.spi.commit.CompositeEditorProvider;
+import org.apache.jackrabbit.oak.spi.commit.EditorHook;
 import org.apache.jackrabbit.oak.spi.commit.EmptyHook;
 import org.apache.jackrabbit.oak.spi.mount.Mount;
 import org.apache.jackrabbit.oak.spi.mount.MountInfoProvider;
@@ -48,6 +58,46 @@ import org.junit.Test;
 public class InitialContentMigratorTest {
 
     @Test
+    public void noMigrationJcrNamespaces() throws Exception {
+        // Initialize seed
+        NodeStore seed = new MemoryNodeStore();
+        EditorHook hook = new EditorHook(
+            new CompositeEditorProvider(new NamespaceEditorProvider(), new TypeEditorProvider()));
+        NodeBuilder seedRootBuilder = seed.getRoot().builder();
+
+        // Initialize seed content
+        new InitialContent().initialize(seedRootBuilder);
+        NodeBuilder namespaceBuilder = seedRootBuilder.getChildNode(JCR_SYSTEM).getChildNode(REP_NAMESPACES);
+        Namespaces.addCustomMapping(namespaceBuilder, "http://sling.apache.org/jcr/sling/1.0", "sling");
+        Namespaces.buildIndexNode(namespaceBuilder);
+
+        seed.merge(seedRootBuilder, hook, CommitInfo.EMPTY);
+
+        // Initialize target to migrate to
+        MemoryNodeStore target = new MemoryNodeStore();
+        NodeBuilder targetRootBuilder = target.getRoot().builder();
+        targetRootBuilder.child(JCR_SYSTEM);
+        target.merge(targetRootBuilder, EmptyHook.INSTANCE, CommitInfo.EMPTY);
+
+        MountInfoProvider mip = Mounts.newBuilder().mount("seed", "/first").build();
+        // perform migration
+        InitialContentMigrator icm = new InitialContentMigrator(target, seed, mip.getMountByName("seed"));
+        icm.migrate();
+
+        // Initialize target with a little different namespace
+        targetRootBuilder = target.getRoot().builder();
+        new InitialContent().initialize(targetRootBuilder);
+        NodeBuilder targetNamespaceBuilder = targetRootBuilder.getChildNode(JCR_SYSTEM).getChildNode(REP_NAMESPACES);
+        Namespaces.addCustomMapping(targetNamespaceBuilder, "http://pling.apache.org/jcr/sling/1.0", "pling");
+        Namespaces.buildIndexNode(targetNamespaceBuilder);
+        target.merge(targetRootBuilder, hook, CommitInfo.EMPTY);
+
+        NodeState targetRoot = target.getRoot();
+        assertTrue(NAMESPACES_PATH + "/" + REP_NSDATA + " should have been created",
+            targetRoot.getChildNode(JCR_SYSTEM).getChildNode(REP_NAMESPACES).hasChildNode(REP_NSDATA));
+    }
+
+    @Test
     public void migrateContentWithCheckpoints() throws IOException, CommitFailedException {
 
         // 1. populate the seed store with