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 ca...@apache.org on 2017/12/25 19:05:09 UTC

svn commit: r1819253 - in /jackrabbit/oak/trunk: oak-api/src/main/java/org/apache/jackrabbit/oak/api/jmx/IndexerMBean.java oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexerMBeanImpl.java

Author: catholicon
Date: Mon Dec 25 19:05:09 2017
New Revision: 1819253

URL: http://svn.apache.org/viewvc?rev=1819253&view=rev
Log:
OAK-7113: IndexerMBean should allow to import without depending on all IndexStatsMbean available

Modified:
    jackrabbit/oak/trunk/oak-api/src/main/java/org/apache/jackrabbit/oak/api/jmx/IndexerMBean.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexerMBeanImpl.java

Modified: jackrabbit/oak/trunk/oak-api/src/main/java/org/apache/jackrabbit/oak/api/jmx/IndexerMBean.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-api/src/main/java/org/apache/jackrabbit/oak/api/jmx/IndexerMBean.java?rev=1819253&r1=1819252&r2=1819253&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-api/src/main/java/org/apache/jackrabbit/oak/api/jmx/IndexerMBean.java (original)
+++ jackrabbit/oak/trunk/oak-api/src/main/java/org/apache/jackrabbit/oak/api/jmx/IndexerMBean.java Mon Dec 25 19:05:09 2017
@@ -33,4 +33,14 @@ public interface IndexerMBean {
             @Name("indexDirPath")
             @Description("Path on server file system where index content generated by oak-run is present")
                     String indexDirPath) throws IOException, CommitFailedException;
+
+    boolean importIndex(
+            @Name("indexDirPath")
+            @Description("Path on server file system where index content generated by oak-run is present")
+                    String indexDirPath,
+            @Name("ignoreLocalLock")
+            @Description("Useful for importing generated content during startup when IndexMBean instances" +
+                    " might not be available")
+                    boolean ignoreLocalLock
+            ) throws IOException, CommitFailedException;
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexerMBeanImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexerMBeanImpl.java?rev=1819253&r1=1819252&r2=1819253&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexerMBeanImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexerMBeanImpl.java Mon Dec 25 19:05:09 2017
@@ -44,6 +44,7 @@ import org.osgi.service.component.annota
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static org.apache.jackrabbit.oak.plugins.index.importer.AsyncIndexerLock.NOOP_LOCK;
 import static org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardUtils.registerMBean;
 
 @Component(service = {})
@@ -65,8 +66,15 @@ public class IndexerMBeanImpl extends An
 
     @Override
     public boolean importIndex(String indexDirPath) throws IOException, CommitFailedException {
+        return importIndex(indexDirPath, false);
+    }
+
+    @Override
+    public boolean importIndex(String indexDirPath, boolean ignoreLocalLock) throws IOException, CommitFailedException {
+
         try {
-            IndexImporter importer = new IndexImporter(nodeStore, new File(indexDirPath), editorProvider, createLock());
+            IndexImporter importer =
+                    new IndexImporter(nodeStore, new File(indexDirPath), editorProvider, createLock(ignoreLocalLock));
             providerTracker.getServices().forEach(importer::addImporterProvider);
             importer.importIndex();
         } catch (IOException | CommitFailedException | RuntimeException e) {
@@ -76,11 +84,14 @@ public class IndexerMBeanImpl extends An
         return true;
     }
 
-    private AsyncIndexerLock createLock() {
+    private AsyncIndexerLock createLock(boolean ignoreLocalLock) {
         if (nodeStore instanceof Clusterable) {
             return new ClusterNodeStoreLock(nodeStore);
+        } else if (!ignoreLocalLock) {
+            return new AbortingIndexerLock(asyncIndexInfoService);
+        } else {
+            return NOOP_LOCK;
         }
-        return new AbortingIndexerLock(asyncIndexInfoService);
     }