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 2014/12/08 16:31:40 UTC
svn commit: r1643841 - in
/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index:
AsyncIndexUpdate.java IndexUpdate.java
Author: chetanm
Date: Mon Dec 8 15:31:40 2014
New Revision: 1643841
URL: http://svn.apache.org/r1643841
Log:
OAK-2321 - Provide details in log when reindexing is completed by AsyncIndexUpdate
Merging 1643287
Modified:
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
Modified: jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java?rev=1643841&r1=1643840&r2=1643841&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java (original)
+++ jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java Mon Dec 8 15:31:40 2014
@@ -32,6 +32,7 @@ import java.util.concurrent.TimeUnit;
import javax.annotation.Nonnull;
+import com.google.common.base.Stopwatch;
import org.apache.jackrabbit.oak.api.CommitFailedException;
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Type;
@@ -253,9 +254,11 @@ public class AsyncIndexUpdate implements
// check for concurrent updates
NodeState async = root.getChildNode(ASYNC);
- if (async.getLong(name + "-lease") > System.currentTimeMillis()) {
+ long leaseEndTime = async.getLong(name + "-lease");
+ long currentTime = System.currentTimeMillis();
+ if (leaseEndTime > currentTime) {
log.debug("Another copy of the {} index update is already running;"
- + " skipping this update", name);
+ + " skipping this update. Time left for lease to expire {}s", name, (leaseEndTime - currentTime)/1000);
return;
}
@@ -334,6 +337,7 @@ public class AsyncIndexUpdate implements
NodeState before, String beforeCheckpoint,
NodeState after, String afterCheckpoint, String afterTime)
throws CommitFailedException {
+ Stopwatch watch = Stopwatch.createStarted();
// start collecting runtime statistics
preAsyncRunStatsStats(indexStats);
@@ -383,6 +387,9 @@ public class AsyncIndexUpdate implements
postAsyncRunStatsStatus(indexStats);
}
mergeWithConcurrencyCheck(builder, beforeCheckpoint, callback.lease);
+ if (indexUpdate.isReindexingPerformed()) {
+ log.info("Reindexing completed for indexes: {} in {}", indexUpdate.getAllReIndexedIndexes(), watch);
+ }
} finally {
callback.close();
}
Modified: jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java?rev=1643841&r1=1643840&r2=1643841&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java (original)
+++ jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java Mon Dec 8 15:31:40 2014
@@ -41,6 +41,7 @@ import java.util.Set;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
+import com.google.common.collect.Sets;
import org.apache.jackrabbit.oak.api.CommitFailedException;
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Type;
@@ -57,11 +58,7 @@ public class IndexUpdate implements Edit
private final Logger log = LoggerFactory.getLogger(getClass());
- private final IndexEditorProvider provider;
-
- private final String async;
-
- private final NodeState root;
+ private final IndexUpdateRootState rootState;
private final NodeBuilder builder;
@@ -84,11 +81,6 @@ public class IndexUpdate implements Edit
*/
private final Map<String, Editor> reindex = new HashMap<String, Editor>();
- /**
- * Callback for the update events of the indexing job
- */
- private final IndexUpdateCallback updateCallback;
-
private MissingIndexProviderStrategy missingProvider = new MissingIndexProviderStrategy();
public IndexUpdate(
@@ -98,21 +90,15 @@ public class IndexUpdate implements Edit
this.parent = null;
this.name = null;
this.path = "/";
- this.provider = checkNotNull(provider);
- this.async = async;
- this.root = checkNotNull(root);
+ this.rootState = new IndexUpdateRootState(provider, async, root, updateCallback);
this.builder = checkNotNull(builder);
- this.updateCallback = checkNotNull(updateCallback);
}
private IndexUpdate(IndexUpdate parent, String name) {
this.parent = checkNotNull(parent);
this.name = name;
- this.provider = parent.provider;
- this.async = parent.async;
- this.root = parent.root;
+ this.rootState = parent.rootState;
this.builder = parent.builder.getChildNode(checkNotNull(name));
- this.updateCallback = parent.updateCallback;
}
@Override
@@ -122,6 +108,7 @@ public class IndexUpdate implements Edit
if(!reindex.isEmpty()){
log.info("Reindexing would be performed for following indexes {}", reindex.keySet());
+ rootState.reindexedIndexes.addAll(reindex.keySet());
}
// no-op when reindex is empty
@@ -136,6 +123,14 @@ public class IndexUpdate implements Edit
}
}
+ public boolean isReindexingPerformed(){
+ return !getAllReIndexedIndexes().isEmpty();
+ }
+
+ public Set<String> getAllReIndexedIndexes(){
+ return rootState.reindexedIndexes;
+ }
+
private boolean shouldReindex(NodeBuilder definition, NodeState before,
String name) {
PropertyState ps = definition.getProperty(REINDEX_PROPERTY_NAME);
@@ -155,7 +150,7 @@ public class IndexUpdate implements Edit
NodeState before) throws CommitFailedException {
for (String name : definitions.getChildNodeNames()) {
NodeBuilder definition = definitions.getChildNode(name);
- if (Objects.equal(async, definition.getString(ASYNC_PROPERTY_NAME))) {
+ if (Objects.equal(rootState.async, definition.getString(ASYNC_PROPERTY_NAME))) {
String type = definition.getString(TYPE_PROPERTY_NAME);
if (type == null) {
// probably not an index def
@@ -163,7 +158,7 @@ public class IndexUpdate implements Edit
}
boolean shouldReindex = shouldReindex(definition,
before, name);
- Editor editor = provider.getIndexEditor(type, definition, root, updateCallback);
+ Editor editor = rootState.provider.getIndexEditor(type, definition, rootState.root, rootState.updateCallback);
if (editor == null) {
missingProvider.onMissingIndex(type, definition);
} else if (shouldReindex) {
@@ -301,4 +296,23 @@ public class IndexUpdate implements Edit
return this;
}
+ private static final class IndexUpdateRootState {
+ final IndexEditorProvider provider;
+ final String async;
+ final NodeState root;
+ /**
+ * Callback for the update events of the indexing job
+ */
+ final IndexUpdateCallback updateCallback;
+ final Set<String> reindexedIndexes = Sets.newHashSet();
+
+ private IndexUpdateRootState(IndexEditorProvider provider, String async, NodeState root,
+ IndexUpdateCallback updateCallback) {
+ this.provider = checkNotNull(provider);
+ this.async = async;
+ this.root = checkNotNull(root);
+ this.updateCallback = checkNotNull(updateCallback);
+ }
+ }
+
}