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

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

diff --git a/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java b/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
index aa70fb2..4b2944c 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
@@ -89,12 +89,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);
 
   /**
@@ -119,7 +119,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
@@ -161,7 +161,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.
@@ -187,8 +187,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).
@@ -213,8 +211,6 @@
       }
     }
 
-
-
     /**
      * Enqueues a TopologyMsg for all the connected replication servers in order
      * to let them know our connected LDAP servers.
@@ -224,8 +220,6 @@
       sendRSTopologyMsg = true;
     }
 
-
-
     /**
      * Enqueues a ChangeTimeHeartbeatMsg received from a DS for forwarding to
      * all other RS instances.
@@ -238,19 +232,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();
@@ -2117,7 +2120,7 @@
   /**
    * Clears the Db associated with that domain.
    */
-  public void clearDbs()
+  private void clearDbs()
   {
     try
     {
@@ -2803,7 +2806,7 @@
       }
     }
 
-    if (pendingMsgs.sendRSTopologyMsg)
+    if (pendingMsgs.sendRSTopologyMsg && !connectedRSs.isEmpty())
     {
       final TopologyMsg topoMsg = createTopologyMsgForRS();
       for (ServerHandler handler : connectedRSs.values())

--
Gitblit v1.10.0