Author: chetanm
Date: Mon Jul 10 08:47:17 2017
New Revision: 1801424
URL: http://svn.apache.org/viewvc?rev=1801424&view=rev
Log:
OAK-6271 - Support for importing index files
Add a method to check if the lane is locked for indexing.
Also make AsyncIndexerLock interface public as it needs to be used from oak-run
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/importer/AsyncIndexerLock.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/importer/ClusterNodeStoreLock.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/importer/ClusterNodeStoreLockTest.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/importer/AsyncIndexerLock.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/importer/AsyncIndexerLock.java?rev=1801424&r1=1801423&r2=1801424&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/importer/AsyncIndexerLock.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/importer/AsyncIndexerLock.java
Mon Jul 10 08:47:17 2017
@@ -25,7 +25,7 @@ import org.apache.jackrabbit.oak.api.Com
* Lock used to prevent AsyncIndexUpdate from running when Index import
* is in progress
*/
-interface AsyncIndexerLock<T extends AsyncIndexerLock.LockToken> {
+public interface AsyncIndexerLock<T extends AsyncIndexerLock.LockToken> {
AsyncIndexerLock NOOP_LOCK = new AsyncIndexerLock() {
private final LockToken noopToken = new LockToken() {};
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/importer/ClusterNodeStoreLock.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/importer/ClusterNodeStoreLock.java?rev=1801424&r1=1801423&r2=1801424&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/importer/ClusterNodeStoreLock.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/importer/ClusterNodeStoreLock.java
Mon Jul 10 08:47:17 2017
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import org.apache.jackrabbit.oak.api.CommitFailedException;
import org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
+import org.apache.jackrabbit.oak.spi.state.NodeState;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
import org.apache.jackrabbit.oak.stats.Clock;
import org.slf4j.Logger;
@@ -85,6 +86,12 @@ public class ClusterNodeStoreLock implem
NodeStoreUtils.mergeWithConcurrentCheck(nodeStore, builder);
log.info("Remove the lock for async indexer lane [{}]",
token.laneName);
}
+
+ public boolean isLocked(String asyncIndexerLane) {
+ NodeState async = nodeStore.getRoot().getChildNode(":async");
+ String leaseName = AsyncIndexUpdate.leasify(asyncIndexerLane);
+ return async.hasProperty(leaseName);
+ }
}
class ClusteredLockToken implements AsyncIndexerLock.LockToken {
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/importer/ClusterNodeStoreLockTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/importer/ClusterNodeStoreLockTest.java?rev=1801424&r1=1801423&r2=1801424&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/importer/ClusterNodeStoreLockTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/importer/ClusterNodeStoreLockTest.java
Mon Jul 10 08:47:17 2017
@@ -60,10 +60,11 @@ public class ClusterNodeStoreLockTest {
assertFalse(getAsync().hasProperty(AsyncIndexUpdate.leasify(name)));
- AsyncIndexerLock lock = new ClusterNodeStoreLock(store);
- LockToken token = lock.lock("async");
+ ClusterNodeStoreLock lock = new ClusterNodeStoreLock(store);
+ ClusteredLockToken token = lock.lock("async");
assertTrue(getAsync().hasProperty(AsyncIndexUpdate.leasify(name)));
+ assertTrue(lock.isLocked(name));
lock.unlock(token);
assertFalse(getAsync().hasProperty(AsyncIndexUpdate.leasify(name)));