From 4ee8f6bc1acc5f2e33f56bf3d668e2075b4c2566 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thierry=20Yg=C3=A9?= Date: Sun, 8 Nov 2015 18:48:22 +0100 Subject: [PATCH] @releng adding new AllIndexStats MBean to be registered in Oak, and implementing the new IndexStatsMBean method in the AsyncIndexUpdate class --- oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java | 13 +++++++------ .../org/apache/jackrabbit/oak/api/jmx/IndexStatsMBean.java | 5 +++++ .../jackrabbit/oak/plugins/index/AsyncIndexUpdate.java | 7 +++++++ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java index 72f951a..92cb31c 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java @@ -58,17 +58,13 @@ import org.apache.jackrabbit.oak.api.ContentSession; import org.apache.jackrabbit.oak.api.Descriptors; import org.apache.jackrabbit.oak.api.Root; +import org.apache.jackrabbit.oak.api.jmx.AllIndexStatsMBean; import org.apache.jackrabbit.oak.api.jmx.QueryEngineSettingsMBean; import org.apache.jackrabbit.oak.api.jmx.RepositoryManagementMBean; import org.apache.jackrabbit.oak.core.ContentRepositoryImpl; import org.apache.jackrabbit.oak.management.RepositoryManager; import org.apache.jackrabbit.oak.plugins.commit.ConflictHook; -import org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate; -import org.apache.jackrabbit.oak.plugins.index.CompositeIndexEditorProvider; -import org.apache.jackrabbit.oak.plugins.index.IndexConstants; -import org.apache.jackrabbit.oak.plugins.index.IndexEditorProvider; -import org.apache.jackrabbit.oak.plugins.index.IndexMBeanRegistration; -import org.apache.jackrabbit.oak.plugins.index.IndexUpdateProvider; +import org.apache.jackrabbit.oak.plugins.index.*; import org.apache.jackrabbit.oak.plugins.index.counter.jmx.NodeCounter; import org.apache.jackrabbit.oak.plugins.index.counter.jmx.NodeCounterMBean; import org.apache.jackrabbit.oak.plugins.index.property.jmx.PropertyIndexAsyncReindex; @@ -593,6 +589,11 @@ private ContentRepository createNewContentRepository() { regs.add(registerMBean(whiteboard, PropertyIndexAsyncReindexMBean.class, asyncPI, PropertyIndexAsyncReindexMBean.TYPE, "async")); + // register our new mbean to get consolidated info from all "IndexStats" mbeans + AllIndexStatsMBeanService allIndexStatsMBean = new AllIndexStatsMBeanService(); + regs.add(registerMBean(whiteboard, + AllIndexStatsMBean.class, allIndexStatsMBean, + AllIndexStatsMBean.TYPE, "AllIndexStats")); } regs.add(registerMBean(whiteboard, NodeCounterMBean.class, diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/IndexStatsMBean.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/IndexStatsMBean.java index aa3f5c6..5c00e44 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/IndexStatsMBean.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/IndexStatsMBean.java @@ -58,6 +58,11 @@ String getLastIndexedTime(); /** + * @return the start time of the last successful indexed operation + */ + String getStartLastSuccessIndexedTime(); + + /** * Pauses the background indexing process. Future changes are not indexed * until the {@link #resume()} method is called. * diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java index 9c80b03..2ab899f 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java @@ -515,6 +515,7 @@ protected AsyncIndexStats() { super(IndexStatsMBean.class); } + private String startLastSuccessful = ""; private String start = ""; private String done = ""; private String status = STATUS_INIT; @@ -553,6 +554,7 @@ public void done(String now) { if (watch.isRunning()) { watch.stop(); } + startLastSuccessful = start; execStats.incrementCounter(); execStats.recordExecution(watch.elapsed(TimeUnit.MILLISECONDS), updates); watch.reset(); @@ -617,6 +619,11 @@ public String getLastIndexedTime() { } @Override + public String getStartLastSuccessIndexedTime() { + return startLastSuccessful; + } + + @Override public void pause() { log.debug("[{}] Pausing the async indexer", name); this.isPaused = true;