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