From 1ae102817c1753ec82aee2cac88f6aba5b454ed7 Mon Sep 17 00:00:00 2001
From: ludovicp <ludovicp@localhost>
Date: Mon, 31 May 2010 13:13:36 +0000
Subject: [PATCH] Add try / catch block to better scope exception caught in monitoring publisher thread.

---
 opendj-sdk/opends/src/server/org/opends/server/replication/server/MonitoringPublisher.java |   65 +++++++++++++++++++-------------
 1 files changed, 39 insertions(+), 26 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/MonitoringPublisher.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/MonitoringPublisher.java
index 71c652a..d74a43c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/MonitoringPublisher.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/MonitoringPublisher.java
@@ -27,8 +27,14 @@
 package org.opends.server.replication.server;
 
 import java.io.IOException;
+import java.util.NoSuchElementException;
+import org.opends.messages.Category;
+import org.opends.messages.Message;
+import org.opends.messages.Severity;
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
 import static org.opends.server.loggers.debug.DebugLogger.getTracer;
+import static org.opends.server.loggers.ErrorLogger.logError;
+import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString;
 
 import org.opends.server.api.DirectoryThread;
 import org.opends.server.loggers.debug.DebugTracer;
@@ -96,39 +102,46 @@
     {
       try
       {
-        synchronized (sleeper)
+        try
         {
-          sleeper.wait(period);
+          synchronized (sleeper)
+          {
+            sleeper.wait(period);
+          }
+        } catch (InterruptedException ex)
+        {
+          TRACER.debugInfo("Monitoring publisher for dn " +
+              replicationServerDomain.getBaseDn().toString() + " in RS " +
+              replicationServerDomain.getReplicationServer().getServerId() +
+              " has been interrupted while sleeping.");
         }
-      } catch (InterruptedException ex)
-      {
-        TRACER.debugInfo("Monitoring publisher for dn " +
-            replicationServerDomain.getBaseDn().toString() + " in RS " +
-            replicationServerDomain.getReplicationServer().getServerId() +
-            " has been interrupted while sleeping.");
-      }
 
-      // Send global topology information to peer DSs
-      MonitorMsg monitorMsg =
-        replicationServerDomain.createGlobalTopologyMonitorMsg(0, 0, true);
-      int localServerId =
-          replicationServerDomain.getReplicationServer().getServerId();
-      if (monitorMsg != null)
-      {
-        for (ServerHandler serverHandler :
-          replicationServerDomain.getConnectedDSs().values())
+        // Send global topology information to peer DSs
+        MonitorMsg monitorMsg =
+          replicationServerDomain.createGlobalTopologyMonitorMsg(0, 0, true);
+        int localServerId =
+            replicationServerDomain.getReplicationServer().getServerId();
+        if (monitorMsg != null)
         {
-          // Set the right sender and destination ids
-          monitorMsg.setSenderID(localServerId);
-          monitorMsg.setDestination(serverHandler.getServerId());
-          try
+          for (ServerHandler serverHandler :
+            replicationServerDomain.getConnectedDSs().values())
           {
-            serverHandler.send(monitorMsg);
-          } catch (IOException e)
-          {
-            // Server is disconnecting ? Forget it
+            // Set the right sender and destination ids
+            monitorMsg.setSenderID(localServerId);
+            monitorMsg.setDestination(serverHandler.getServerId());
+            try
+            {
+              serverHandler.send(monitorMsg);
+            } catch (IOException e)
+            {
+              // Server is disconnecting ? Forget it
+            }
           }
         }
+      } catch (NoSuchElementException e)
+      {
+        logError(Message.raw(Category.SYNC, Severity.SEVERE_ERROR,
+            stackTraceToSingleLineString(e)));
       }
     }
 

--
Gitblit v1.10.0