From 45eb21b1354b6925fc058f834f505a9699d1bbbe Mon Sep 17 00:00:00 2001
From: pgamba <pgamba@localhost>
Date: Wed, 10 Jun 2009 08:43:50 +0000
Subject: [PATCH] External Changelog - first step - related issues 495,  519

---
 opends/src/server/org/opends/server/replication/server/ServerReader.java |  109 ++++++++++++++++++++++++++++++++----------------------
 1 files changed, 64 insertions(+), 45 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/server/ServerReader.java b/opends/src/server/org/opends/server/replication/server/ServerReader.java
index bea8995..c128db2 100644
--- a/opends/src/server/org/opends/server/replication/server/ServerReader.java
+++ b/opends/src/server/org/opends/server/replication/server/ServerReader.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2006-2008 Sun Microsystems, Inc.
+ *      Copyright 2006-2009 Sun Microsystems, Inc.
  */
 package org.opends.server.replication.server;
 
@@ -93,8 +93,9 @@
     ServerHandler handler,
     ReplicationServerDomain replicationServerDomain)
   {
-    super("Replication Reader for " + handler.toString() + " in RS " +
-      replicationServerDomain.getReplicationServer().getServerId());
+    super("Replication Reader Thread for handler of " +
+        handler.toString() +
+        " in " + replicationServerDomain);
     this.session = session;
     this.serverId = serverId;
     this.handler = handler;
@@ -106,13 +107,10 @@
    */
   public void run()
   {
+    Message errMessage = null;
     if (debugEnabled())
     {
-      TRACER.debugInfo(
-        "In RS " + replicationServerDomain.getReplicationServer().
-        getMonitorInstanceName() +
-        (handler.isReplicationServer() ? " RS " : " LS") +
-        " reader starting for serverId=" + serverId);
+      TRACER.debugInfo(this.getName() + " starting");
     }
     /*
      * wait on input stream
@@ -127,16 +125,11 @@
         {
           ReplicationMsg msg = session.receive();
 
-          /*
           if (debugEnabled())
           {
-          TRACER.debugInfo(
-          "In RS " + replicationServerDomain.getReplicationServer().
-          getMonitorInstanceName() +
-          (handler.isReplicationServer()?" From RS ":" From LS")+
-          " with serverId=" + serverId + " receives " + msg);
+            TRACER.debugInfo(this.getName() + " receives " + msg);
           }
-           */
+
           if (msg instanceof AckMsg)
           {
             AckMsg ack = (AckMsg) msg;
@@ -146,7 +139,7 @@
           {
             boolean filtered = false;
             /* Ignore updates in some cases */
-            if (handler.isLDAPserver())
+            if (handler.isDataServer())
             {
               /**
                * Ignore updates from DS in bad BAD_GENID_STATUS or
@@ -250,12 +243,36 @@
           } else if (msg instanceof TopologyMsg)
           {
             TopologyMsg topoMsg = (TopologyMsg) msg;
-            replicationServerDomain.receiveTopoInfoFromRS(topoMsg,
-              handler, true);
+            try
+            {
+              ReplicationServerHandler rsh = (ReplicationServerHandler)handler;
+              replicationServerDomain.receiveTopoInfoFromRS(topoMsg,
+                  rsh, true);
+            }
+            catch(Exception e)
+            {
+              errMessage =
+                ERR_REPLICATION_PROTOCOL_MESSAGE_TYPE.get(
+                    "TopologyMsg", "other");
+              logError(errMessage);
+            }
           } else if (msg instanceof ChangeStatusMsg)
           {
             ChangeStatusMsg csMsg = (ChangeStatusMsg) msg;
-            replicationServerDomain.processNewStatus(handler, csMsg);
+            try
+            {
+              DataServerHandler dsh = (DataServerHandler)handler;
+              replicationServerDomain.processNewStatus(dsh, csMsg);
+            }
+            catch(Exception e)
+            {
+              errMessage =
+                ERR_RECEIVED_CHANGE_STATUS_NOT_FROM_DS.get(
+                    replicationServerDomain.getBaseDn(),
+                    Short.toString(handler.getServerId()),
+                    csMsg.toString());
+              logError(errMessage);
+            }
           } else if (msg instanceof MonitorRequestMsg)
           {
             MonitorRequestMsg replServerMonitorRequestMsg =
@@ -271,8 +288,8 @@
              * The remote server has sent an unknown message,
              * close the conenction.
              */
-            Message message = NOTE_READER_NULL_MSG.get(handler.toString());
-            logError(message);
+            errMessage = NOTE_READER_NULL_MSG.get(handler.toString());
+            logError(errMessage);
             return;
           }
         } catch (NotSupportedOldVersionPDUException e)
@@ -286,7 +303,8 @@
               getMonitorInstanceName() + ":" + e.getMessage());
         }
       }
-    } catch (IOException e)
+    }
+    catch (IOException e)
     {
       /*
        * The connection has been broken
@@ -297,13 +315,15 @@
         TRACER.debugInfo(
           "In RS " + replicationServerDomain.getReplicationServer().
           getMonitorInstanceName() +
-          " reader IO EXCEPTION for serverID=" + serverId +
+          " reader IO EXCEPTION for serverID=" + serverId + " " +
+          this + " " +
           stackTraceToSingleLineString(e) + " " + e.getLocalizedMessage());
-      Message message = NOTE_SERVER_DISCONNECT.get(handler.toString(),
+      errMessage = NOTE_SERVER_DISCONNECT.get(handler.toString(),
         Short.toString(replicationServerDomain.
         getReplicationServer().getServerId()));
-      logError(message);
-    } catch (ClassNotFoundException e)
+      logError(errMessage);
+    }
+    catch (ClassNotFoundException e)
     {
       if (debugEnabled())
         TRACER.debugInfo(
@@ -315,49 +335,48 @@
        * The remote server has sent an unknown message,
        * close the connection.
        */
-      Message message = ERR_UNKNOWN_MESSAGE.get(handler.toString());
-      logError(message);
-    } catch (Exception e)
+      errMessage = ERR_UNKNOWN_MESSAGE.get(handler.toString());
+      logError(errMessage);
+    }
+    catch (Exception e)
     {
       if (debugEnabled())
         TRACER.debugInfo(
           "In RS <" + replicationServerDomain.getReplicationServer().
           getMonitorInstanceName() +
           " server reader EXCEPTION serverID=" + serverId +
-          stackTraceToSingleLineString(e));
+          " " + stackTraceToSingleLineString(e));
       /*
        * The remote server has sent an unknown message,
        * close the connection.
        */
-      Message message = NOTE_READER_EXCEPTION.get(handler.toString());
-      logError(message);
-    } finally
+      errMessage = NOTE_READER_EXCEPTION.get(handler.toString());
+      logError(errMessage);
+    }
+    finally
     {
       /*
        * The thread only exit the loop above is some error condition
        * happen.
        * Attempt to close the socket and stop the server handler.
        */
-      if (debugEnabled())
-        TRACER.debugInfo(
-          "In RS " + replicationServerDomain.getReplicationServer().
-          getMonitorInstanceName() +
-          " server reader for serverID=" + serverId +
-          " is closing the session");
       try
       {
+        if (debugEnabled())
+          TRACER.debugInfo(
+            "In RS " + replicationServerDomain.getReplicationServer().
+            getMonitorInstanceName() +
+            this + " is closing the session");
         session.close();
       } catch (IOException e)
       {
       // ignore
       }
       replicationServerDomain.stopServer(handler);
+      if (debugEnabled())
+      {
+        TRACER.debugInfo(this.getName() + " stopped " + errMessage);
+      }
     }
-    if (debugEnabled())
-      TRACER.debugInfo(
-        "In RS " + replicationServerDomain.getReplicationServer().
-        getMonitorInstanceName() +
-        (handler.isReplicationServer() ? " RS" : " LDAP") +
-        " server reader stopped for serverID=" + serverId);
   }
 }

--
Gitblit v1.10.0