From c8909a96ccd351ebe0503d9924110716ddf73a2e Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Tue, 18 Sep 2007 21:28:58 +0000
Subject: [PATCH] Fix a problem that could prevent monitor providers that support periodic updates from being started. Also, add a layer of protection against uncaught exceptions from the MonitorProvider.updateMonitorData() method.
---
opendj-sdk/opends/src/server/org/opends/server/core/MonitorConfigManager.java | 12 ++++++++++++
opendj-sdk/opends/src/server/org/opends/server/api/MonitorProvider.java | 12 +++++++++++-
2 files changed, 23 insertions(+), 1 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/MonitorProvider.java b/opendj-sdk/opends/src/server/org/opends/server/api/MonitorProvider.java
index e32a727..253ab2e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/MonitorProvider.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/api/MonitorProvider.java
@@ -275,7 +275,17 @@
{
long stopSleepTime =
System.currentTimeMillis() + getUpdateInterval();
- updateMonitorData();
+ try
+ {
+ updateMonitorData();
+ }
+ catch (Exception e)
+ {
+ if (debugEnabled())
+ {
+ TRACER.debugCaught(DebugLogLevel.ERROR, e);
+ }
+ }
long remainingSleepTime =
stopSleepTime - System.currentTimeMillis();
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/MonitorConfigManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/MonitorConfigManager.java
index 5b521a9..afe4761 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/MonitorConfigManager.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/MonitorConfigManager.java
@@ -126,6 +126,10 @@
MonitorProvider<? extends MonitorProviderCfg> monitor =
loadMonitor(className, monitorConfig);
monitors.put(monitorConfig.dn(), monitor);
+ if (monitor.getUpdateInterval() > 0)
+ {
+ monitor.start();
+ }
DirectoryServer.registerMonitorProvider(monitor);
}
catch (InitializationException ie)
@@ -207,6 +211,10 @@
if (resultCode == ResultCode.SUCCESS)
{
monitors.put(configuration.dn(), monitor);
+ if (monitor.getUpdateInterval() > 0)
+ {
+ monitor.start();
+ }
DirectoryServer.registerMonitorProvider(monitor);
}
@@ -350,6 +358,10 @@
if (resultCode == ResultCode.SUCCESS)
{
monitors.put(configuration.dn(), monitor);
+ if (monitor.getUpdateInterval() > 0)
+ {
+ monitor.start();
+ }
DirectoryServer.registerMonitorProvider(monitor);
}
--
Gitblit v1.10.0