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 th...@apache.org on 2019/06/06 14:31:01 UTC

svn commit: r1860717 - in /jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene: CopyOnReadStatsMBean.java IndexCopier.java LuceneIndexEditorProvider.java LuceneIndexStatsUpdateCallback.java

Author: thomasm
Date: Thu Jun  6 14:31:01 2019
New Revision: 1860717

URL: http://svn.apache.org/viewvc?rev=1860717&view=rev
Log:
OAK-8344 Expose local index directory size as a metric

Modified:
    jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/CopyOnReadStatsMBean.java
    jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java
    jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorProvider.java
    jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexStatsUpdateCallback.java

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/CopyOnReadStatsMBean.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/CopyOnReadStatsMBean.java?rev=1860717&r1=1860716&r2=1860717&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/CopyOnReadStatsMBean.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/CopyOnReadStatsMBean.java Thu Jun  6 14:31:01 2019
@@ -69,6 +69,8 @@ public interface CopyOnReadStatsMBean {
 
     String getLocalIndexSize();
 
+    long getLocalIndexDirSize();
+
     String[] getGarbageDetails();
 
     String getGarbageSize();

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java?rev=1860717&r1=1860716&r2=1860717&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java Thu Jun  6 14:31:01 2019
@@ -547,6 +547,11 @@ public class IndexCopier implements Copy
     }
 
     @Override
+    public long getLocalIndexDirSize() {
+        return indexRootDirectory.getSize();
+    }
+
+    @Override
     public String[] getGarbageDetails() {
         return toArray(transform(failedToDeleteFiles.values(),
                 new Function<LocalIndexFile, String>() {

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorProvider.java?rev=1860717&r1=1860716&r2=1860717&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorProvider.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorProvider.java Thu Jun  6 14:31:01 2019
@@ -233,8 +233,8 @@ public class LuceneIndexEditorProvider i
             if (propertyIndexUpdateCallback != null) {
                 callbacks.add(propertyIndexUpdateCallback);
             }
-            if (mbean != null && statisticsProvider != null) {
-                callbacks.add(new LuceneIndexStatsUpdateCallback(indexPath, mbean, statisticsProvider));
+            if (mbean != null && statisticsProvider != null && indexCopier != null) {
+                callbacks.add(new LuceneIndexStatsUpdateCallback(indexPath, mbean, statisticsProvider, indexCopier));
             }
 
             if (!callbacks.isEmpty()) {

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexStatsUpdateCallback.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexStatsUpdateCallback.java?rev=1860717&r1=1860716&r2=1860717&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexStatsUpdateCallback.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexStatsUpdateCallback.java Thu Jun  6 14:31:01 2019
@@ -22,6 +22,7 @@ import org.apache.jackrabbit.oak.api.Com
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.plugins.index.search.PropertyDefinition;
 import org.apache.jackrabbit.oak.plugins.index.search.PropertyUpdateCallback;
+import org.apache.jackrabbit.oak.stats.CounterStats;
 import org.apache.jackrabbit.oak.stats.HistogramStats;
 import org.apache.jackrabbit.oak.stats.StatisticsProvider;
 import org.apache.jackrabbit.oak.stats.StatsOptions;
@@ -39,18 +40,21 @@ public class LuceneIndexStatsUpdateCallb
 
     private static final String NO_DOCS = "_NO_DOCS";
     private static final String INDEX_SIZE = "_INDEX_SIZE";
+    private static final String LOCAL_INDEX_DIR_SIZE = "LOCAL_INDEX_DIR_SIZE";
 
     private final Logger log = LoggerFactory.getLogger(getClass());
 
     private final String indexPath;
     private final LuceneIndexMBean luceneIndexMBean;
     private final StatisticsProvider statisticsProvider;
+    private final IndexCopier indexCopier;
 
     LuceneIndexStatsUpdateCallback(String indexPath, @NotNull LuceneIndexMBean luceneIndexMBean,
-                                   @NotNull StatisticsProvider statisticsProvider) {
+                                   @NotNull StatisticsProvider statisticsProvider, @NotNull IndexCopier indexCopier) {
         this.indexPath = indexPath;
         this.luceneIndexMBean = luceneIndexMBean;
         this.statisticsProvider = statisticsProvider;
+        this.indexCopier = indexCopier;
     }
 
     @Override
@@ -69,7 +73,17 @@ public class LuceneIndexStatsUpdateCallb
             HistogramStats indexSizeHistogram = statisticsProvider.getHistogram(indexPath + INDEX_SIZE, StatsOptions.METRICS_ONLY);
             indexSizeHistogram.update(indexSize);
 
+            long localIndexDirSize = indexCopier.getLocalIndexDirSize();
+
+            CounterStats indexDirectorySizeStats = statisticsProvider.getCounterStats(LOCAL_INDEX_DIR_SIZE, StatsOptions.DEFAULT);
+            long deltaInSize = localIndexDirSize - indexDirectorySizeStats.getCount();
+            if (deltaInSize != 0) {
+                indexDirectorySizeStats.inc(deltaInSize);
+                log.debug("index directory size stats updated; size {} delta {}", localIndexDirSize, deltaInSize);
+            }
+
             log.debug("{} stats updated; docCount {}, size {}", indexPath, docCount, indexSize);
+
         } catch (IOException e) {
             log.debug("could not update no_docs/index_size stats for index at {}", indexPath, e);
         }