You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2013/10/15 19:03:20 UTC
svn commit: r1532433 -
/sling/trunk/bundles/extensions/healthcheck/jmx/src/main/java/org/apache/sling/hc/jmx/impl/HealthCheckMBean.java
Author: cziegeler
Date: Tue Oct 15 17:03:20 2013
New Revision: 1532433
URL: http://svn.apache.org/r1532433
Log:
SLING-3177 : Cache hc result in jmx bean
Modified:
sling/trunk/bundles/extensions/healthcheck/jmx/src/main/java/org/apache/sling/hc/jmx/impl/HealthCheckMBean.java
Modified: sling/trunk/bundles/extensions/healthcheck/jmx/src/main/java/org/apache/sling/hc/jmx/impl/HealthCheckMBean.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/jmx/src/main/java/org/apache/sling/hc/jmx/impl/HealthCheckMBean.java?rev=1532433&r1=1532432&r2=1532433&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/healthcheck/jmx/src/main/java/org/apache/sling/hc/jmx/impl/HealthCheckMBean.java (original)
+++ sling/trunk/bundles/extensions/healthcheck/jmx/src/main/java/org/apache/sling/hc/jmx/impl/HealthCheckMBean.java Tue Oct 15 17:03:20 2013
@@ -51,6 +51,9 @@ import org.osgi.framework.ServiceReferen
/** A {@link DynamicMBean} used to execute a {@link HealthCheck} service */
public class HealthCheckMBean implements DynamicMBean {
+ /** A HC result is cached for this time (ms) */
+ private static final long RESULT_TTL = 1500;
+
public static final String HC_OK_ATTRIBUTE_NAME = "ok";
public static final String HC_STATUS_ATTRIBUTE_NAME = "status";
public static final String HC_LOG_ATTRIBUTE_NAME = "log";
@@ -74,6 +77,10 @@ public class HealthCheckMBean implements
/** The default attributes. */
private final Map<String, Object> defaultAttributes;
+ private long healthCheckInvocationTime;
+
+ private Result healthCheckResult;
+
static {
try {
// Define the log row and table types
@@ -137,7 +144,7 @@ public class HealthCheckMBean implements
// we assume that a valid attribute name is used
// which is requesting a hc result
if ( hcResult == null ) {
- hcResult = this.healthCheck.execute();
+ hcResult = this.getHealthCheckResult();
}
if ( HC_OK_ATTRIBUTE_NAME.equals(key) ) {
@@ -241,4 +248,14 @@ public class HealthCheckMBean implements
public String toString() {
return "HealthCheckMBean [healthCheck=" + healthCheck + "]";
}
+
+ private Result getHealthCheckResult() {
+ synchronized ( this ) {
+ if ( this.healthCheckResult == null || this.healthCheckInvocationTime < System.currentTimeMillis() ) {
+ this.healthCheckResult = this.healthCheck.execute();
+ this.healthCheckInvocationTime = System.currentTimeMillis() + RESULT_TTL;
+ }
+ return this.healthCheckResult;
+ }
+ }
}
\ No newline at end of file