From 62c7d9970ee34d102a78ce72a459274a97721cc6 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 06 Jun 2014 14:50:38 +0000
Subject: [PATCH] OPENDJ-1453 (CR-3697) Change time heart beat change numbers should be synced with updates

---
 opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServerDomain.java |   35 +++++++++++++++++++----------------
 1 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServerDomain.java b/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
index 9aefb0b..dc93aa1 100644
--- a/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
+++ b/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
@@ -86,12 +86,12 @@
    * topology. Using an AtomicReference to avoid leaking references to costly
    * threads.
    */
-  private AtomicReference<MonitoringPublisher> monitoringPublisher =
+  private final AtomicReference<MonitoringPublisher> monitoringPublisher =
       new AtomicReference<MonitoringPublisher>();
   /**
    * Maintains monitor data for the current domain.
    */
-  private ReplicationDomainMonitor domainMonitor =
+  private final ReplicationDomainMonitor domainMonitor =
       new ReplicationDomainMonitor(this);
 
   /**
@@ -116,7 +116,7 @@
 
   private final ReplicationDomainDB domainDB;
   /** The ReplicationServer that created the current instance. */
-  private ReplicationServer localReplicationServer;
+  private final ReplicationServer localReplicationServer;
 
   /**
    * The generationId of the current replication domain. The generationId is
@@ -158,7 +158,7 @@
    * The timer used to run the timeout code (timer tasks) for the assured update
    * messages we are waiting acks for.
    */
-  private Timer assuredTimeoutTimer;
+  private final Timer assuredTimeoutTimer;
   /**
    * Counter used to purge the timer tasks references in assuredTimeoutTimer,
    * every n number of treated assured messages.
@@ -186,8 +186,6 @@
     private boolean sendDSTopologyMsg;
     private int excludedDSForTopologyMsg = -1;
 
-
-
     /**
      * Enqueues a TopologyMsg for all the connected directory servers in order
      * to let them know the topology (every known DSs and RSs).
@@ -212,8 +210,6 @@
       }
     }
 
-
-
     /**
      * Enqueues a TopologyMsg for all the connected replication servers in order
      * to let them know our connected LDAP servers.
@@ -223,8 +219,6 @@
       sendRSTopologyMsg = true;
     }
 
-
-
     /**
      * Enqueues a ChangeTimeHeartbeatMsg received from a DS for forwarding to
      * all other RS instances.
@@ -237,19 +231,28 @@
       pendingHeartbeats.put(msg.getCSN().getServerId(), msg);
     }
 
-
-
     private void enqueueDSMonitorMsg(int dsServerId, MonitorMsg msg)
     {
       pendingDSMonitorMsgs.put(dsServerId, msg);
     }
 
-
-
     private void enqueueRSMonitorMsg(int rsServerId, MonitorMsg msg)
     {
       pendingRSMonitorMsgs.put(rsServerId, msg);
     }
+
+    /** {@inheritDoc} */
+    @Override
+    public String toString()
+    {
+      return getClass().getSimpleName()
+          + " pendingHeartbeats=" + pendingHeartbeats
+          + ", pendingDSMonitorMsgs=" + pendingDSMonitorMsgs
+          + ", pendingRSMonitorMsgs=" + pendingRSMonitorMsgs
+          + ", sendRSTopologyMsg=" + sendRSTopologyMsg
+          + ", sendDSTopologyMsg=" + sendDSTopologyMsg
+          + ", excludedDSForTopologyMsg=" + excludedDSForTopologyMsg;
+    }
   }
 
   private final Object pendingStatusMessagesLock = new Object();
@@ -2086,7 +2089,7 @@
   /**
    * Clears the Db associated with that domain.
    */
-  public void clearDbs()
+  private void clearDbs()
   {
     try
     {
@@ -2768,7 +2771,7 @@
       }
     }
 
-    if (pendingMsgs.sendRSTopologyMsg)
+    if (pendingMsgs.sendRSTopologyMsg && !connectedRSs.isEmpty())
     {
       final TopologyMsg topoMsg = createTopologyMsgForRS();
       for (ServerHandler handler : connectedRSs.values())

--
Gitblit v1.10.0