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 2016/12/08 05:17:53 UTC
svn commit: r1773178 - in
/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene:
IndexTracker.java LuceneIndexMBean.java LuceneIndexMBeanImpl.java
Author: chetanm
Date: Thu Dec 8 05:17:52 2016
New Revision: 1773178
URL: http://svn.apache.org/viewvc?rev=1773178&view=rev
Log:
OAK-4400 - Correlate index with the index definition used to build it
Add MBean operation to access stored index definition
Modified:
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexTracker.java
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexMBean.java
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexMBeanImpl.java
Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexTracker.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexTracker.java?rev=1773178&r1=1773177&r2=1773178&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexTracker.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexTracker.java Thu Dec 8 05:17:52 2016
@@ -199,6 +199,10 @@ public class IndexTracker {
return badIndexTracker;
}
+ NodeState getRoot() {
+ return root;
+ }
+
private synchronized IndexNode findIndexNode(String path) {
// Retry the lookup from acquireIndexNode now that we're
// synchronized. The acquire() call is guaranteed to succeed
Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexMBean.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexMBean.java?rev=1773178&r1=1773177&r2=1773178&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexMBean.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexMBean.java Thu Dec 8 05:17:52 2016
@@ -59,7 +59,10 @@ public interface LuceneIndexMBean {
String[] getFieldInfo(
@Name("indexPath")
@Description("The index path (empty for all indexes)")
- String indexPath
- ) throws IOException;
+ String indexPath
+ ) throws IOException;
+
+ @Description("Returns the stored index definition for index at given path in string form")
+ String getStoredIndexDefinition(@Name("indexPath") String indexPath);
}
Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexMBeanImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexMBeanImpl.java?rev=1773178&r1=1773177&r2=1773178&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexMBeanImpl.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexMBeanImpl.java Thu Dec 8 05:17:52 2016
@@ -19,10 +19,6 @@
package org.apache.jackrabbit.oak.plugins.index.lucene;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.apache.jackrabbit.oak.commons.IOUtils.humanReadableByteCount;
-import static org.apache.jackrabbit.oak.plugins.index.lucene.TermFactory.newAncestorTerm;
-
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
@@ -42,10 +38,16 @@ import javax.management.openmbean.Tabula
import javax.management.openmbean.TabularDataSupport;
import javax.management.openmbean.TabularType;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Sets;
+import com.google.common.collect.TreeTraverser;
import org.apache.jackrabbit.oak.commons.PathUtils;
import org.apache.jackrabbit.oak.commons.jmx.AnnotatedStandardMBean;
+import org.apache.jackrabbit.oak.commons.jmx.Name;
import org.apache.jackrabbit.oak.plugins.index.lucene.BadIndexTracker.BadIndexInfo;
import org.apache.jackrabbit.oak.plugins.index.lucene.LucenePropertyIndex.PathStoredFieldVisitor;
+import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.apache.jackrabbit.oak.spi.state.NodeStateUtils;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.Fields;
import org.apache.lucene.index.IndexReader;
@@ -64,9 +66,10 @@ import org.apache.lucene.store.IOContext
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Sets;
-import com.google.common.collect.TreeTraverser;
+import static com.google.common.base.Preconditions.checkNotNull;
+import static org.apache.jackrabbit.oak.commons.IOUtils.humanReadableByteCount;
+import static org.apache.jackrabbit.oak.plugins.index.lucene.IndexDefinition.INDEX_DEFINITION_NODE;
+import static org.apache.jackrabbit.oak.plugins.index.lucene.TermFactory.newAncestorTerm;
public class LuceneIndexMBeanImpl extends AnnotatedStandardMBean implements LuceneIndexMBean {
private final Logger log = LoggerFactory.getLogger(getClass());
@@ -180,7 +183,7 @@ public class LuceneIndexMBeanImpl extend
}
return new String[0];
}
-
+
@Override
public String[] getFieldInfo(String indexPath) throws IOException {
TreeSet<String> indexes = new TreeSet<String>();
@@ -207,16 +210,20 @@ public class LuceneIndexMBeanImpl extend
return list.toArray(new String[0]);
}
- private static ArrayList<String> getFieldInfo(String path, IndexSearcher searcher) throws IOException {
- ArrayList<String> list = new ArrayList<String>();
- IndexReader reader = searcher.getIndexReader();
- Fields fields = MultiFields.getFields(reader);
- if (fields != null) {
- for(String f : fields) {
- list.add(path + " " + f + " " + reader.getDocCount(f));
- }
+ @Override
+ public String getStoredIndexDefinition(@Name("indexPath") String indexPath) {
+ IndexDefinition defn = indexTracker.getIndexDefinition(indexPath);
+ NodeState state;
+ if (defn != null){
+ state = defn.getDefinitionNodeState();
+ } else {
+ state = NodeStateUtils.getNode(indexTracker.getRoot(), indexPath + "/" + INDEX_DEFINITION_NODE);
}
- return list;
+
+ if (state.exists()){
+ return NodeStateUtils.toString(state);
+ }
+ return "No index found at given path";
}
public void dumpIndexContent(String sourcePath, String destPath) throws IOException {
@@ -243,6 +250,18 @@ public class LuceneIndexMBeanImpl extend
}
}
+ private static ArrayList<String> getFieldInfo(String path, IndexSearcher searcher) throws IOException {
+ ArrayList<String> list = new ArrayList<String>();
+ IndexReader reader = searcher.getIndexReader();
+ Fields fields = MultiFields.getFields(reader);
+ if (fields != null) {
+ for(String f : fields) {
+ list.add(path + " " + f + " " + reader.getDocCount(f));
+ }
+ }
+ return list;
+ }
+
private static String[] determineIndexedPaths(IndexSearcher searcher, final int maxLevel, int maxPathCount)
throws IOException {
Set<String> paths = Sets.newHashSet();