Index: jackrabbit-api/src/main/java/org/apache/jackrabbit/api/jmx/EventListenerMBean.java =================================================================== --- jackrabbit-api/src/main/java/org/apache/jackrabbit/api/jmx/EventListenerMBean.java (revision 1754256) +++ jackrabbit-api/src/main/java/org/apache/jackrabbit/api/jmx/EventListenerMBean.java (working copy) @@ -71,6 +71,9 @@ /** Ratio of time spent in event processing */ double getRatioOfTimeSpentProcessingEvents(); + /** Ratio of time spent in event listener vs. the overall event processing */ + double getEventConsumerTimeRatio(); + /** Is user information accessed without checking if an event is external? */ boolean isUserInfoAccessedWithoutExternalsCheck(); Index: jackrabbit-api/src/main/java/org/apache/jackrabbit/api/jmx/package-info.java =================================================================== --- jackrabbit-api/src/main/java/org/apache/jackrabbit/api/jmx/package-info.java (revision 1754256) +++ jackrabbit-api/src/main/java/org/apache/jackrabbit/api/jmx/package-info.java (working copy) @@ -18,5 +18,5 @@ /** * JMX management interfaces for JCR. */ -@aQute.bnd.annotation.Version("2.1.0") +@aQute.bnd.annotation.Version("2.2.0") package org.apache.jackrabbit.api.jmx; Index: jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/observation/ListenerTracker.java =================================================================== --- jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/observation/ListenerTracker.java (revision 1754256) +++ jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/observation/ListenerTracker.java (working copy) @@ -279,6 +279,12 @@ / Math.max(currentTimeMillis() - startTime, 1); } @Override + public double getEventConsumerTimeRatio() { + double consumerTime = sum(eventConsumerTime.getValuePerSecond()); + double producerTime = sum(eventProducerTime.getValuePerSecond()); + return consumerTime / Math.max(consumerTime + producerTime, 1); + } + @Override public boolean isUserInfoAccessedWithoutExternalsCheck() { return userInfoAccessedWithoutExternalsCheck.get(); } @@ -361,4 +367,12 @@ } } + private static long sum(long[] values) { + long sum = 0; + for (long v : values) { + sum += v; + } + return sum; + } + }