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)));


Reply via email to