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