Author: tomekr
Date: Thu Apr 21 09:47:54 2016
New Revision: 1740267

URL: http://svn.apache.org/viewvc?rev=1740267&view=rev
Log:
OAK-4242: Counter index should be rebuilt after successful migration

Modified:
    
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java
    
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java

Modified: 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java?rev=1740267&r1=1740266&r2=1740267&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java
 Thu Apr 21 09:47:54 2016
@@ -52,6 +52,7 @@ import static org.apache.jackrabbit.oak.
 import static 
org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade.DEFAULT_INCLUDE_PATHS;
 import static 
org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade.DEFAULT_MERGE_PATHS;
 import static 
org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade.calculateEffectiveIncludePaths;
+import static 
org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade.markIndexesToBeRebuilt;
 import static 
org.apache.jackrabbit.oak.upgrade.nodestate.NodeStateCopier.copyProperties;
 import static 
org.apache.jackrabbit.oak.upgrade.version.VersionCopier.copyVersionStorage;
 
@@ -275,6 +276,7 @@ public class RepositorySidegrade {
             hooks.addAll(customCommitHooks);
         }
 
+        markIndexesToBeRebuilt(targetRoot);
 
         target.merge(targetRoot, new LoggingCompositeHook(hooks, null, false), 
CommitInfo.EMPTY);
     }

Modified: 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java?rev=1740267&r1=1740266&r2=1740267&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
 Thu Apr 21 09:47:54 2016
@@ -26,6 +26,7 @@ import static com.google.common.collect.
 import static com.google.common.collect.Sets.newHashSet;
 import static com.google.common.collect.Sets.union;
 import static org.apache.jackrabbit.JcrConstants.JCR_SYSTEM;
+import static 
org.apache.jackrabbit.oak.plugins.index.IndexConstants.REINDEX_PROPERTY_NAME;
 import static 
org.apache.jackrabbit.oak.plugins.name.Namespaces.addCustomMapping;
 import static 
org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.NODE_TYPES_PATH;
 import static 
org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_ALL;
@@ -62,6 +63,7 @@ import com.google.common.base.Stopwatch;
 import com.google.common.collect.HashBiMap;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import org.apache.jackrabbit.api.security.authorization.PrivilegeManager;
 import org.apache.jackrabbit.core.RepositoryContext;
@@ -75,13 +77,17 @@ import org.apache.jackrabbit.core.nodety
 import org.apache.jackrabbit.core.security.authorization.PrivilegeRegistry;
 import org.apache.jackrabbit.core.security.user.UserManagerImpl;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
+import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.plugins.index.CompositeIndexEditorProvider;
 import org.apache.jackrabbit.oak.plugins.index.IndexEditorProvider;
 import org.apache.jackrabbit.oak.plugins.index.IndexUpdate;
 import org.apache.jackrabbit.oak.plugins.index.IndexUpdateCallback;
+import org.apache.jackrabbit.oak.plugins.index.IndexUtils;
+import 
org.apache.jackrabbit.oak.plugins.index.counter.NodeCounterEditorProvider;
 import 
org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditorProvider;
 import 
org.apache.jackrabbit.oak.plugins.index.reference.ReferenceEditorProvider;
 import org.apache.jackrabbit.oak.plugins.name.NamespaceConstants;
@@ -136,6 +142,8 @@ public class RepositoryUpgrade {
 
     private static final Logger logger = 
LoggerFactory.getLogger(RepositoryUpgrade.class);
 
+    private static final Set<String> INDEXES_TO_REBUILD = 
ImmutableSet.of("counter");
+
     public static final Set<String> DEFAULT_INCLUDE_PATHS = ALL;
 
     public static final Set<String> DEFAULT_EXCLUDE_PATHS = NONE;
@@ -502,6 +510,8 @@ public class RepositoryUpgrade {
                 hooks.addAll(customCommitHooks);
             }
 
+            markIndexesToBeRebuilt(targetBuilder);
+
             // type validation, reference and indexing hooks
             hooks.add(new EditorHook(new CompositeEditorProvider(
                 createTypeEditorProvider(),
@@ -516,6 +526,21 @@ public class RepositoryUpgrade {
         }
     }
 
+    static void markIndexesToBeRebuilt(NodeBuilder targetRoot) {
+        NodeBuilder oakIndex = IndexUtils.getOrCreateOakIndex(targetRoot);
+        for (String indexName : INDEXES_TO_REBUILD) {
+            final NodeBuilder indexDef = oakIndex.getChildNode(indexName);
+            if (!indexDef.exists()) {
+                continue;
+            }
+            final PropertyState reindex = 
indexDef.getProperty(REINDEX_PROPERTY_NAME);
+            logger.info("Marking {} to be reindexed", indexName);
+            if (reindex == null || !reindex.getValue(Type.BOOLEAN)) {
+                indexDef.setProperty(REINDEX_PROPERTY_NAME, true);
+            }
+        }
+    }
+
     private boolean overrideEarlyShutdown() {
         if (earlyShutdown == false) {
             return false;


Reply via email to