From 20d43c0d51839d0ef2e6963c8fcd1d2e4c62b234 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 27 Aug 2013 07:42:15 +0000
Subject: [PATCH] ServerState.java: Assigned serverIdToChangeNumber field in the declaration. In reload(), called update(). In cover(ServerState), cover(ChangeNumber). In duplicate(), called Map.putAll().
---
opends/src/server/org/opends/server/replication/common/ServerState.java | 44 ++++++++++++++------------------------------
1 files changed, 14 insertions(+), 30 deletions(-)
diff --git a/opends/src/server/org/opends/server/replication/common/ServerState.java b/opends/src/server/org/opends/server/replication/common/ServerState.java
index 5970c1c..18f57b5 100644
--- a/opends/src/server/org/opends/server/replication/common/ServerState.java
+++ b/opends/src/server/org/opends/server/replication/common/ServerState.java
@@ -48,7 +48,8 @@
{
/** Associates a serverId with a ChangeNumber. */
- private final Map<Integer, ChangeNumber> serverIdToChangeNumber;
+ private final Map<Integer, ChangeNumber> serverIdToChangeNumber =
+ new HashMap<Integer, ChangeNumber>();
/**
* Whether the state has been saved to persistent storage. It starts at true,
* and moves to false when an update is made to the current object.
@@ -60,7 +61,7 @@
*/
public ServerState()
{
- serverIdToChangeNumber = new HashMap<Integer, ChangeNumber>();
+ super();
}
/**
@@ -92,10 +93,11 @@
{
try
{
- serverIdToChangeNumber = new HashMap<Integer, ChangeNumber>();
-
while (endpos > pos)
{
+ // FIXME JNR: why store the serverId separately from the changeNumber
+ // since the changeNumber already contains the serverId?
+
// read the ServerId
int length = getNextLength(in, pos);
String serverIdString = new String(in, pos, length, "UTF-8");
@@ -108,10 +110,9 @@
ChangeNumber cn = new ChangeNumber(cnString);
pos += length +1;
- // Add the serverid
+ // Add the serverId
serverIdToChangeNumber.put(serverId, cn);
}
-
} catch (UnsupportedEncodingException e)
{
throw new DataFormatException("UTF-8 is not supported by this jvm.");
@@ -183,7 +184,6 @@
return false;
boolean updated = false;
-
for (ChangeNumber cn : serverState.serverIdToChangeNumber.values())
{
if (update(cn))
@@ -191,7 +191,6 @@
updated = true;
}
}
-
return updated;
}
@@ -207,22 +206,11 @@
return false;
}
- boolean result = false;
-
synchronized (serverIdToChangeNumber)
{
clear();
- for (Integer serverId : serverState)
- {
- ChangeNumber maxChangeNumber = serverState.getChangeNumber(serverId);
- if (update(maxChangeNumber))
- {
- result = true;
- }
- }
+ return update(serverState);
}
-
- return result;
}
/**
@@ -357,7 +345,7 @@
{
for (ChangeNumber tmpMax : serverIdToChangeNumber.values())
{
- if ((maxCN==null) || (tmpMax.newer(maxCN)))
+ if (maxCN == null || tmpMax.newer(maxCN))
maxCN = tmpMax;
}
}
@@ -395,6 +383,7 @@
for (Entry<Integer, ChangeNumber> entry : serverIdToChangeNumber
.entrySet())
{
+ // serverId is useless, see comment in ServerState ctor
String serverIdStr = String.valueOf(entry.getKey());
idList.add(serverIdStr);
length += serverIdStr.length() + 1;
@@ -439,9 +428,7 @@
{
for (ChangeNumber coveredChange : covered.serverIdToChangeNumber.values())
{
- ChangeNumber change =
- this.serverIdToChangeNumber.get(coveredChange.getServerId());
- if ((change == null) || (change.older(coveredChange)))
+ if (!cover(coveredChange))
{
return false;
}
@@ -460,7 +447,7 @@
{
ChangeNumber change =
this.serverIdToChangeNumber.get(covered.getServerId());
- return !((change == null) || (change.older(covered)));
+ return change != null && !change.older(covered);
}
/**
@@ -482,10 +469,7 @@
ServerState newState = new ServerState();
synchronized (serverIdToChangeNumber)
{
- for (ChangeNumber change : serverIdToChangeNumber.values())
- {
- newState.serverIdToChangeNumber.put(change.getServerId(), change);
- }
+ newState.serverIdToChangeNumber.putAll(serverIdToChangeNumber);
}
return newState;
}
@@ -502,7 +486,7 @@
public static int diffChanges(ServerState ss1, ServerState ss2)
throws IllegalArgumentException
{
- if ((ss1 == null) || (ss2 == null))
+ if (ss1 == null || ss2 == null)
{
throw new IllegalArgumentException("Null server state(s)");
}
--
Gitblit v1.10.0