From 690420f9cacff5b2d04fe3660e520df1df731d21 Mon Sep 17 00:00:00 2001
From: Mohit Kataria <tihom88@gmail.com>
Date: Fri, 15 Mar 2019 15:17:38 +0530
Subject: [PATCH] OAK-8134: Index Copier Stats MBean shows stale info

---
 .../jackrabbit/oak/plugins/index/lucene/IndexCopier.java    | 2 +-
 .../plugins/index/lucene/directory/IndexRootDirectory.java  | 6 +++---
 .../index/lucene/directory/IndexRootDirectoryTest.java      | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java
index 9e01311db3..a99812545c 100644
--- a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java
+++ b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java
@@ -453,7 +453,7 @@ public class IndexCopier implements CopyOnReadStatsMBean, Closeable {
         TabularDataSupport tds;
         try{
             TabularType tt = new TabularType(IndexMappingData.class.getName(),
-                    "Lucene Index Stats", IndexMappingData.TYPE, new String[]{"jcrPath"});
+                    "Lucene Index Stats", IndexMappingData.TYPE, new String[]{"fsPath"});
             tds = new TabularDataSupport(tt);
             for (LocalIndexDir indexDir : indexRootDirectory.getAllLocalIndexes()){
                 String size = humanReadableByteCount(indexDir.size());
diff --git a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/IndexRootDirectory.java b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/IndexRootDirectory.java
index ca7e9ac5d2..1bea48c6c8 100644
--- a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/IndexRootDirectory.java
+++ b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/IndexRootDirectory.java
@@ -132,9 +132,9 @@ public class IndexRootDirectory {
      */
     public List<LocalIndexDir> getAllLocalIndexes() throws IOException {
         Map<String, List<LocalIndexDir>> mapping = getIndexesPerPath();
-        List<LocalIndexDir> result = Lists.newArrayListWithCapacity(mapping.size());
+        List<LocalIndexDir> result = new ArrayList<>();
         for (Map.Entry<String, List<LocalIndexDir>> e : mapping.entrySet()){
-            result.add(e.getValue().get(0));
+            result.addAll(e.getValue());
         }
         return result;
     }
@@ -228,7 +228,7 @@ public class IndexRootDirectory {
             pathToDirMap.get(localIndexDir.getJcrPath()).add(localIndexDir);
         }
 
-        Map<String, List<LocalIndexDir>> result = Maps.newHashMap();
+        Map<String, List<LocalIndexDir>> result = Maps.newTreeMap();
         for (Map.Entry<String, Collection<LocalIndexDir>> e : pathToDirMap.asMap().entrySet()){
             List<LocalIndexDir> sortedDirs = new ArrayList<>(e.getValue());
             Collections.sort(sortedDirs, Collections.<LocalIndexDir>reverseOrder());
diff --git a/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/IndexRootDirectoryTest.java b/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/IndexRootDirectoryTest.java
index 2ad2b1db9b..f82d8c0f1d 100644
--- a/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/IndexRootDirectoryTest.java
+++ b/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/IndexRootDirectoryTest.java
@@ -106,7 +106,7 @@ public class IndexRootDirectoryTest {
         File fb2 = dir.getIndexDir(getDefn(), "/b", "default");
 
         List<LocalIndexDir> dirs = dir.getAllLocalIndexes();
-        assertEquals(2, dirs.size());
+        assertEquals(4, dirs.size());
 
         assertEquals(fb2.getParentFile().getAbsolutePath(), getDir("/b", dirs).getFSPath());
         assertEquals(fa2.getParentFile().getAbsolutePath(), getDir("/a", dirs).getFSPath());
-- 
2.17.1

