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:18:33 UTC

svn commit: r1773182 - in /jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene: LuceneIndexMBean.java LuceneIndexMBeanImpl.java

Author: chetanm
Date: Thu Dec  8 05:18:33 2016
New Revision: 1773182

URL: http://svn.apache.org/viewvc?rev=1773182&view=rev
Log:
OAK-4400 - Correlate index with the index definition used to build it

Add MBean operation to diff between stored index definition and current index definition

Modified:
    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/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=1773182&r1=1773181&r2=1773182&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:18:33 2016
@@ -65,4 +65,8 @@ public interface LuceneIndexMBean {
     @Description("Returns the stored index definition for index at given path in string form")
     String getStoredIndexDefinition(@Name("indexPath") String indexPath);
 
+    @Description("Returns the diff of index definition for index at given path from the stored index definition in " +
+            "string form")
+    String diffStoredIndexDefinition(@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=1773182&r1=1773181&r2=1773182&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:18:33 2016
@@ -44,6 +44,8 @@ import com.google.common.collect.TreeTra
 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.commons.json.JsopBuilder;
+import org.apache.jackrabbit.oak.json.JsopDiff;
 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;
@@ -226,6 +228,19 @@ public class LuceneIndexMBeanImpl extend
         return "No index found at given path";
     }
 
+    @Override
+    public String diffStoredIndexDefinition(@Name("indexPath") String indexPath) {
+        NodeState stored = NodeStateUtils.getNode(indexTracker.getRoot(), indexPath + "/" + INDEX_DEFINITION_NODE);
+        NodeState current = NodeStateUtils.getNode(indexTracker.getRoot(), indexPath);
+        if (stored.exists()){
+            current = NodeStateCloner.cloneVisibleState(current);
+            JsopDiff diff = new JsopDiff();
+            current.compareAgainstBaseState(stored, diff);
+            return JsopBuilder.prettyPrint(diff.toString());
+        }
+        return "No stored index definition found at given path";
+    }
+
     public void dumpIndexContent(String sourcePath, String destPath) throws IOException {
         IndexNode indexNode = null;
         try {