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;