From c015616756e6faa64060971753bc77978ae82dec Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Wed, 07 Oct 2009 12:19:42 +0000
Subject: [PATCH] The documentation and the configuration of a Replication Domain allow a maximum value of 65535 for the server-id property. Nevertheless, the server-id in the ReplicationDomain implementation is managed as a short allowing a maximum value of 32767.

---
 opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java |  125 +++++++++++++++++++++--------------------
 1 files changed, 64 insertions(+), 61 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 2e4f34c..8d3b4a7 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
@@ -120,8 +120,8 @@
    * to this replication server.
    *
    */
-  private final Map<Short, DataServerHandler> directoryServers =
-    new ConcurrentHashMap<Short, DataServerHandler>();
+  private final Map<Integer, DataServerHandler> directoryServers =
+    new ConcurrentHashMap<Integer, DataServerHandler>();
 
   /*
    * This map contains one ServerHandler for each replication servers
@@ -132,8 +132,8 @@
    * We add new TreeSet in the HashMap when a new replication server register
    * to this replication server.
    */
-  private final Map<Short, ReplicationServerHandler> replicationServers =
-    new ConcurrentHashMap<Short, ReplicationServerHandler>();
+  private final Map<Integer, ReplicationServerHandler> replicationServers =
+    new ConcurrentHashMap<Integer, ReplicationServerHandler>();
 
   private final ConcurrentLinkedQueue<MessageHandler> otherHandlers =
     new ConcurrentLinkedQueue<MessageHandler>();
@@ -142,8 +142,8 @@
    * This map contains the List of updates received from each
    * LDAP server
    */
-  private final Map<Short, DbHandler> sourceDbHandlers =
-    new ConcurrentHashMap<Short, DbHandler>();
+  private final Map<Integer, DbHandler> sourceDbHandlers =
+    new ConcurrentHashMap<Integer, DbHandler>();
   private ReplicationServer replicationServer;
 
   // GenerationId management
@@ -218,7 +218,7 @@
   {
 
     ChangeNumber cn = update.getChangeNumber();
-    short id = cn.getServerId();
+    int id = cn.getServerId();
     sourceHandler.updateServerState(update);
     sourceHandler.incrementInCount();
 
@@ -268,7 +268,7 @@
         {
           // Unknown assured mode: should never happen
           Message errorMsg = ERR_RS_UNKNOWN_ASSURED_MODE.get(
-            Short.toString(replicationServer.getServerId()),
+            Integer.toString(replicationServer.getServerId()),
             assuredMode.toString(), baseDn, update.toString());
           logError(errorMsg);
           assuredMessage = false;
@@ -313,7 +313,7 @@
     // Publish the messages to the source handler
     dbHandler.add(update);
 
-    List<Short> expectedServers = null;
+    List<Integer> expectedServers = null;
     if (assuredMessage)
     {
       expectedServers = preparedAssuredInfo.expectedServers;
@@ -374,7 +374,7 @@
               " for dn " + baseDn + ", update " +
               update.getChangeNumber().toString() +
               " will not be sent to replication server " +
-              Short.toString(handler.getServerId()) + " with generation id " +
+              Integer.toString(handler.getServerId()) + " with generation id " +
               Long.toString(handler.getGenerationId()) +
               " different from local " +
               "generation id " + Long.toString(generationId));
@@ -439,7 +439,7 @@
               " for dn " + baseDn + ", update " +
               update.getChangeNumber().toString() +
               " will not be sent to directory server " +
-              Short.toString(handler.getServerId()) + " with generation id " +
+              Integer.toString(handler.getServerId()) + " with generation id " +
               Long.toString(handler.getGenerationId()) +
               " different from local " +
               "generation id " + Long.toString(generationId));
@@ -449,7 +449,7 @@
               " for dn " + baseDn + ", update " +
               update.getChangeNumber().toString() +
               " will not be sent to directory server " +
-              Short.toString(handler.getServerId()) +
+              Integer.toString(handler.getServerId()) +
               " as it is in full update");
         }
 
@@ -505,7 +505,7 @@
        * request.
        *
        */
-      public List<Short> expectedServers = null;
+      public List<Integer> expectedServers = null;
 
       /**
        * The constructed ExpectedAcksInfo object to be used when acks will be
@@ -535,8 +535,8 @@
     ChangeNumber cn = update.getChangeNumber();
     byte groupId = replicationServer.getGroupId();
     byte sourceGroupId = sourceHandler.getGroupId();
-    List<Short> expectedServers = new ArrayList<Short>();
-    List<Short> wrongStatusServers = new ArrayList<Short>();
+    List<Integer> expectedServers = new ArrayList<Integer>();
+    List<Integer> wrongStatusServers = new ArrayList<Integer>();
 
     if (sourceGroupId == groupId)
       // Assured feature does not cross different group ids
@@ -643,7 +643,7 @@
     {
       // Should never happen
       Message errorMsg = ERR_UNKNOWN_ASSURED_SAFE_DATA_LEVEL.get(
-        Short.toString(replicationServer.getServerId()),
+        Integer.toString(replicationServer.getServerId()),
         Byte.toString(safeDataLevel), baseDn, update.toString());
       logError(errorMsg);
     } else if (sourceGroupId != groupId)
@@ -705,7 +705,7 @@
       }
     }
 
-    List<Short> expectedServers = new ArrayList<Short>();
+    List<Integer> expectedServers = new ArrayList<Integer>();
     if (interestedInAcks)
     {
       if (sourceHandler.isDataServer())
@@ -805,8 +805,9 @@
              */
             MessageBuilder mb = new MessageBuilder();
             mb.append(ERR_RS_ERROR_SENDING_ACK.get(
-              Short.toString(replicationServer.getServerId()),
-              Short.toString(origServer.getServerId()), cn.toString(), baseDn));
+              Integer.toString(replicationServer.getServerId()),
+              Integer.toString(origServer.getServerId()),
+              cn.toString(), baseDn));
             mb.append(stackTraceToSingleLineString(e));
             logError(mb.toMessage());
             stopServer(origServer);
@@ -867,11 +868,11 @@
           ServerHandler origServer = expectedAcksInfo.getRequesterServer();
           if (debugEnabled())
             TRACER.debugInfo(
-              "In RS " + Short.toString(replicationServer.getServerId()) +
+              "In RS " + Integer.toString(replicationServer.getServerId()) +
               " for " + baseDn +
               ", sending timeout for assured update with change " + " number " +
               cn.toString() + " to server id " +
-              Short.toString(origServer.getServerId()));
+              Integer.toString(origServer.getServerId()));
           try
           {
             origServer.sendAck(finalAck);
@@ -883,8 +884,9 @@
              */
             MessageBuilder mb = new MessageBuilder();
             mb.append(ERR_RS_ERROR_SENDING_ACK.get(
-              Short.toString(replicationServer.getServerId()),
-              Short.toString(origServer.getServerId()), cn.toString(), baseDn));
+                Integer.toString(replicationServer.getServerId()),
+                Integer.toString(origServer.getServerId()),
+                cn.toString(), baseDn));
             mb.append(stackTraceToSingleLineString(e));
             logError(mb.toMessage());
             stopServer(origServer);
@@ -904,8 +906,8 @@
             }
           }
           //   retrieve expected servers in timeout to increment their counter
-          List<Short> serversInTimeout = expectedAcksInfo.getTimeoutServers();
-          for (Short serverId : serversInTimeout)
+          List<Integer> serversInTimeout = expectedAcksInfo.getTimeoutServers();
+          for (Integer serverId : serversInTimeout)
           {
             ServerHandler expectedServerInTimeout =
               directoryServers.get(serverId);
@@ -954,7 +956,7 @@
    *
    * @param serverId the serverId to be checked.
    */
-  public void waitDisconnection(short serverId)
+  public void waitDisconnection(int serverId)
   {
     if (directoryServers.containsKey(serverId))
     {
@@ -1327,7 +1329,7 @@
    * whatever directly connected of connected to another RS.
    * @return a set containing the servers known by this replicationServer.
    */
-  public Set<Short> getServers()
+  public Set<Integer> getServers()
   {
     return sourceDbHandlers.keySet();
   }
@@ -1360,7 +1362,7 @@
    * @return the created ReplicationIterator. Null when no DB is available
    * for the provided server Id.
    */
-  public ReplicationIterator getChangelogIterator(short serverId,
+  public ReplicationIterator getChangelogIterator(int serverId,
     ChangeNumber changeNumber)
   {
     DbHandler handler = sourceDbHandlers.get(serverId);
@@ -1393,7 +1395,7 @@
    * @return the created ReplicationIterator. Null when no DB is available
    * for the provided server Id.
    */
-  public ReplicationIterator getIterator(short serverId,
+  public ReplicationIterator getIterator(int serverId,
     ChangeNumber changeNumber)
   {
     DbHandler handler = sourceDbHandlers.get(serverId);
@@ -1442,7 +1444,7 @@
    *
    * @throws DatabaseException If a database error happened.
    */
-  public void setDbHandler(short serverId, DbHandler dbHandler)
+  public void setDbHandler(int serverId, DbHandler dbHandler)
     throws DatabaseException
   {
     synchronized (sourceDbHandlers)
@@ -1576,10 +1578,10 @@
 
             // Add the informations about the Replicas currently in
             // the topology.
-            Iterator<Short> it = md.ldapIterator();
+            Iterator<Integer> it = md.ldapIterator();
             while (it.hasNext())
             {
-              short replicaId = it.next();
+              int replicaId = it.next();
               returnMsg.setServerState(
                   replicaId, md.getLDAPServerState(replicaId),
                   md.getApproxFirstMissingDate(replicaId), true);
@@ -1590,7 +1592,7 @@
             it = md.rsIterator();
             while (it.hasNext())
             {
-              short replicaId = it.next();
+              int replicaId = it.next();
               returnMsg.setServerState(
                   replicaId, md.getRSStates(replicaId),
                   md.getRSApproxFirstMissingDate(replicaId), false);
@@ -1661,7 +1663,7 @@
           // We log the error. The requestor will detect a timeout or
           // any other failure on the connection.
           logError(ERR_CHANGELOG_ERROR_SENDING_MSG.get(
-            Short.toString((msg.getDestination()))));
+              Integer.toString((msg.getDestination()))));
         }
       } else if (msg instanceof MonitorMsg)
       {
@@ -1849,7 +1851,8 @@
           {
             Message message = ERR_EXCEPTION_SENDING_TOPO_INFO.get(
             baseDn.toString(),
-            "directory", Short.toString(handler.getServerId()), e.getMessage());
+            "directory", Integer.toString(handler.getServerId()),
+            e.getMessage());
             logError(message);
           }
         }
@@ -1875,7 +1878,7 @@
         {
           Message message = ERR_EXCEPTION_SENDING_TOPO_INFO.get(
             baseDn.toString(),
-            "replication", Short.toString(handler.getServerId()),
+            "replication", Integer.toString(handler.getServerId()),
             e.getMessage());
           logError(message);
         }
@@ -1918,7 +1921,7 @@
    * that we must not include in the list DS list.
    * @return A suitable TopologyMsg PDU to be sent to a peer DS
    */
-  public TopologyMsg createTopologyMsgForDS(short destDsId)
+  public TopologyMsg createTopologyMsgForDS(int destDsId)
   {
     List<DSInfo> dsInfos = new ArrayList<DSInfo>();
     List<RSInfo> rsInfos = new ArrayList<RSInfo>();
@@ -2083,7 +2086,7 @@
       {
         logError(ERR_EXCEPTION_CHANGING_STATUS_AFTER_RESET_GEN_ID.get(baseDn.
           toString(),
-          Short.toString(dsHandler.getServerId()),
+          Integer.toString(dsHandler.getServerId()),
           e.getMessage()));
       }
     }
@@ -2144,7 +2147,7 @@
     buildAndSendTopoInfoToRSs();
 
     Message message = NOTE_DIRECTORY_SERVER_CHANGED_STATUS.get(
-      Short.toString(senderHandler.getServerId()),
+        Integer.toString(senderHandler.getServerId()),
       baseDn.toString(),
       newStatus.toString());
     logError(message);
@@ -2198,7 +2201,7 @@
     {
       logError(ERR_EXCEPTION_CHANGING_STATUS_FROM_STATUS_ANALYZER.get(baseDn.
         toString(),
-        Short.toString(serverHandler.getServerId()),
+        Integer.toString(serverHandler.getServerId()),
         e.getMessage()));
     }
 
@@ -2264,7 +2267,7 @@
    *                 the state.
    * @return Whether it is degraded or not.
    */
-  public boolean isDegradedDueToGenerationId(short serverId)
+  public boolean isDegradedDueToGenerationId(int serverId)
   {
     if (debugEnabled())
       TRACER.debugInfo(
@@ -2354,7 +2357,7 @@
     {
       Message message = NOTE_BAD_GENERATION_ID_FROM_RS.get(
         baseDn,
-        Short.toString(handler.getServerId()),
+        Integer.toString(handler.getServerId()),
         Long.toString(handler.getGenerationId()),
         Long.toString(generationId));
       logError(message);
@@ -2423,7 +2426,7 @@
 
       for (ServerHandler directlsh : directoryServers.values())
       {
-        short serverID = directlsh.getServerId();
+        int serverID = directlsh.getServerId();
 
         // the state comes from the state stored in the SH
         ServerState directlshState = directlsh.getServerState().duplicate();
@@ -2446,10 +2449,10 @@
       // - whatever they are directly or undirectly connected
       ServerState dbServerState = getDbServerState();
       wrkMonitorData.setRSState(replicationServer.getServerId(), dbServerState);
-      Iterator<Short> it = dbServerState.iterator();
+      Iterator<Integer> it = dbServerState.iterator();
       while (it.hasNext())
       {
-        short sid = it.next();
+        int sid = it.next();
         ChangeNumber storedCN = dbServerState.getMaxChangeNumber(sid);
         wrkMonitorData.setMaxCN(sid, storedCN);
       }
@@ -2535,7 +2538,7 @@
           // This is a response for an earlier request whose computing is
           // already complete.
           logError(NOTE_IGNORING_REMOTE_MONITOR_DATA.get(
-                      Short.toString(msg.getsenderID())));
+              Integer.toString(msg.getsenderID())));
           return;
         }
         // Here is the RS state : list <serverID, lastChangeNumber>
@@ -2547,10 +2550,10 @@
         wrkMonitorData.setRSState(msg.getsenderID(), replServerState);
 
         // Store the remote LDAP servers states
-        Iterator<Short> lsidIterator = msg.ldapIterator();
+        Iterator<Integer> lsidIterator = msg.ldapIterator();
         while (lsidIterator.hasNext())
         {
-          short sid = lsidIterator.next();
+          int sid = lsidIterator.next();
           ServerState dsServerState = msg.getLDAPServerState(sid);
           wrkMonitorData.setMaxCNs(dsServerState);
           wrkMonitorData.setLDAPServerState(sid, dsServerState);
@@ -2560,17 +2563,17 @@
 
         // Process the latency reported by the remote RSi on its connections
         // to the other RSes
-        Iterator<Short> rsidIterator = msg.rsIterator();
+        Iterator<Integer> rsidIterator = msg.rsIterator();
         while (rsidIterator.hasNext())
         {
-          short rsid = rsidIterator.next();
+          int rsid = rsidIterator.next();
           if (rsid == replicationServer.getServerId())
           {
             // this is the latency of the remote RSi regarding the current RS
             // let's update the fmd of my connected LS
             for (ServerHandler connectedlsh : directoryServers.values())
             {
-              short connectedlsid = connectedlsh.getServerId();
+              int connectedlsid = connectedlsh.getServerId();
               Long newfmd = msg.getRSApproxFirstMissingDate(rsid);
               wrkMonitorData.setFirstMissingDate(connectedlsid, newfmd);
             }
@@ -2581,7 +2584,7 @@
             ReplicationServerHandler rsjHdr = replicationServers.get(rsid);
             if (rsjHdr != null)
             {
-              for (short remotelsid : rsjHdr.getConnectedDirectoryServerIds())
+              for (int remotelsid : rsjHdr.getConnectedDirectoryServerIds())
               {
                 Long newfmd = msg.getRSApproxFirstMissingDate(rsid);
                 wrkMonitorData.setFirstMissingDate(remotelsid, newfmd);
@@ -2633,7 +2636,7 @@
    * Get the map of connected DSs.
    * @return The map of connected DSs
    */
-  public Map<Short, DataServerHandler> getConnectedDSs()
+  public Map<Integer, DataServerHandler> getConnectedDSs()
   {
     return directoryServers;
   }
@@ -2642,7 +2645,7 @@
    * Get the map of connected RSs.
    * @return The map of connected RSs
    */
-  public Map<Short, ReplicationServerHandler> getConnectedRSs()
+  public Map<Integer, ReplicationServerHandler> getConnectedRSs()
   {
     return replicationServers;
   }
@@ -2894,10 +2897,10 @@
     // compute eligible CN
     ServerState hbState = heartbeatState.duplicate();
 
-    Iterator<Short> it = hbState.iterator();
+    Iterator<Integer> it = hbState.iterator();
     while (it.hasNext())
     {
-      short sid = it.next();
+      int sid = it.next();
       ChangeNumber storedCN = hbState.getMaxChangeNumber(sid);
 
       // If the most recent UpdateMsg or CLHeartbeatMsg received is very old
@@ -2940,10 +2943,10 @@
 
     if (eligibleCN != null)
     {
-      Iterator<Short> it = dbState.iterator();
+      Iterator<Integer> it = dbState.iterator();
       while (it.hasNext())
       {
-        Short sid = it.next();
+        int sid = it.next();
         DbHandler h = sourceDbHandlers.get(sid);
         ChangeNumber dbCN = dbState.getMaxChangeNumber(sid);
         try
@@ -3017,7 +3020,7 @@
     for (DbHandler db : sourceDbHandlers.values())
     {
       // Consider this producer (DS/db).
-      short sid = db.getServerId();
+      int sid = db.getServerId();
 
       ChangeNumber changelogLastCN = db.getLastChange();
       if (changelogLastCN != null)
@@ -3135,11 +3138,11 @@
 
     // Parses the dbState of the domain , server by server
     ServerState dbState = this.getDbServerState();
-    Iterator<Short> it = dbState.iterator();
+    Iterator<Integer> it = dbState.iterator();
     while (it.hasNext())
     {
       // for each server
-      Short sid = it.next();
+      int sid = it.next();
       DbHandler h = sourceDbHandlers.get(sid);
 
       try

--
Gitblit v1.10.0