From 157717b205d4c1f957cf810e04e06f11530c619c Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 02 Sep 2013 08:57:43 +0000
Subject: [PATCH] Renamed: - ChangeNumber to CSN - ChangeNumberGenerator to CSNGenerator - ChangeNumberTest to CSNTest - ChangeNumberGeneratorTest to CSNGeneratorTest
---
opends/src/server/org/opends/server/replication/common/ServerState.java | 211 +++++++++++++++++++++++++---------------------------
1 files changed, 103 insertions(+), 108 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 18f57b5..140de98 100644
--- a/opends/src/server/org/opends/server/replication/common/ServerState.java
+++ b/opends/src/server/org/opends/server/replication/common/ServerState.java
@@ -38,18 +38,16 @@
import org.opends.server.types.ByteString;
/**
- * This class is used to associate serverIds with ChangeNumbers.
+ * This class is used to associate serverIds with {@link CSN}s.
* <p>
* For example, it is exchanged with the replication servers at connection
- * establishment time to communicate
- * "which ChangeNumbers last seen by a serverId"
+ * establishment time to communicate "which CSNs was last seen by a serverId".
*/
public class ServerState implements Iterable<Integer>
{
- /** Associates a serverId with a ChangeNumber. */
- private final Map<Integer, ChangeNumber> serverIdToChangeNumber =
- new HashMap<Integer, ChangeNumber>();
+ /** Associates a serverId with a CSN. */
+ private final Map<Integer, CSN> serverIdToCSN = new HashMap<Integer, CSN>();
/**
* 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.
@@ -71,9 +69,9 @@
*/
public void clear()
{
- synchronized (serverIdToChangeNumber)
+ synchronized (serverIdToCSN)
{
- serverIdToChangeNumber.clear();
+ serverIdToCSN.clear();
}
}
@@ -95,8 +93,8 @@
{
while (endpos > pos)
{
- // FIXME JNR: why store the serverId separately from the changeNumber
- // since the changeNumber already contains the serverId?
+ // FIXME JNR: why store the serverId separately from the CSN since the
+ // CSN already contains the serverId?
// read the ServerId
int length = getNextLength(in, pos);
@@ -104,14 +102,14 @@
int serverId = Integer.valueOf(serverIdString);
pos += length +1;
- // read the ChangeNumber
+ // read the CSN
length = getNextLength(in, pos);
- String cnString = new String(in, pos, length, "UTF-8");
- ChangeNumber cn = new ChangeNumber(cnString);
+ String csnString = new String(in, pos, length, "UTF-8");
+ CSN csn = new CSN(csnString);
pos += length +1;
// Add the serverId
- serverIdToChangeNumber.put(serverId, cn);
+ serverIdToCSN.put(serverId, csn);
}
} catch (UnsupportedEncodingException e)
{
@@ -121,7 +119,7 @@
/**
* Get the length of the next String encoded in the in byte array.
- * This method is used to cut the different parts (server ids, change number)
+ * This method is used to cut the different parts (serverIds, CSN)
* of a server state.
*
* @param in the byte array where to calculate the string.
@@ -143,26 +141,25 @@
}
/**
- * Update the Server State with a ChangeNumber.
+ * Update the Server State with a CSN.
*
- * @param changeNumber The committed ChangeNumber.
- *
+ * @param csn The committed CSN.
* @return a boolean indicating if the update was meaningful.
*/
- public boolean update(ChangeNumber changeNumber)
+ public boolean update(CSN csn)
{
- if (changeNumber == null)
+ if (csn == null)
return false;
saved = false;
- synchronized (serverIdToChangeNumber)
+ synchronized (serverIdToCSN)
{
- int serverId = changeNumber.getServerId();
- ChangeNumber oldCN = serverIdToChangeNumber.get(serverId);
- if (oldCN == null || changeNumber.newer(oldCN))
+ int serverId = csn.getServerId();
+ CSN oldCSN = serverIdToCSN.get(serverId);
+ if (oldCSN == null || csn.newer(oldCSN))
{
- serverIdToChangeNumber.put(serverId, changeNumber);
+ serverIdToCSN.put(serverId, csn);
return true;
}
return false;
@@ -170,12 +167,10 @@
}
/**
- * Update the Server State with a Server State. Every change number of this
- * object is updated with the change number of the passed server state if
- * it is newer.
+ * Update the Server State with a Server State. Every CSN of this object is
+ * updated with the CSN of the passed server state if it is newer.
*
* @param serverState the server state to use for the update.
- *
* @return a boolean indicating if the update was meaningful.
*/
public boolean update(ServerState serverState)
@@ -184,9 +179,9 @@
return false;
boolean updated = false;
- for (ChangeNumber cn : serverState.serverIdToChangeNumber.values())
+ for (CSN csn : serverState.serverIdToCSN.values())
{
- if (update(cn))
+ if (update(csn))
{
updated = true;
}
@@ -206,7 +201,7 @@
return false;
}
- synchronized (serverIdToChangeNumber)
+ synchronized (serverIdToCSN)
{
clear();
return update(serverState);
@@ -228,9 +223,9 @@
{
Set<String> set = new HashSet<String>();
- synchronized (serverIdToChangeNumber)
+ synchronized (serverIdToCSN)
{
- for (ChangeNumber change : serverIdToChangeNumber.values())
+ for (CSN change : serverIdToCSN.values())
{
Date date = new Date(change.getTime());
set.add(change + " " + date + " " + change.getTime());
@@ -241,20 +236,20 @@
}
/**
- * Return an ArrayList of ANS1OctetString encoding the ChangeNumbers
+ * Return an ArrayList of ANS1OctetString encoding the CSNs
* contained in the ServerState.
- * @return an ArrayList of ANS1OctetString encoding the ChangeNumbers
+ * @return an ArrayList of ANS1OctetString encoding the CSNs
* contained in the ServerState.
*/
public ArrayList<ByteString> toASN1ArrayList()
{
ArrayList<ByteString> values = new ArrayList<ByteString>(0);
- synchronized (serverIdToChangeNumber)
+ synchronized (serverIdToCSN)
{
- for (ChangeNumber changeNumber : serverIdToChangeNumber.values())
+ for (CSN csn : serverIdToCSN.values())
{
- values.add(ByteString.valueOf(changeNumber.toString()));
+ values.add(ByteString.valueOf(csn.toString()));
}
}
return values;
@@ -275,20 +270,20 @@
public void writeTo(ASN1Writer writer, short protocolVersion)
throws IOException
{
- synchronized (serverIdToChangeNumber)
+ synchronized (serverIdToCSN)
{
if (protocolVersion >= ProtocolVersion.REPLICATION_PROTOCOL_V7)
{
- for (ChangeNumber cn : serverIdToChangeNumber.values())
+ for (CSN csn : serverIdToCSN.values())
{
- writer.writeOctetString(cn.toByteString());
+ writer.writeOctetString(csn.toByteString());
}
}
else
{
- for (ChangeNumber cn : serverIdToChangeNumber.values())
+ for (CSN csn : serverIdToCSN.values())
{
- writer.writeOctetString(cn.toString());
+ writer.writeOctetString(csn.toString());
}
}
}
@@ -303,13 +298,13 @@
{
StringBuilder buffer = new StringBuilder();
- synchronized (serverIdToChangeNumber)
+ synchronized (serverIdToCSN)
{
- for (ChangeNumber change : serverIdToChangeNumber.values())
+ for (CSN change : serverIdToCSN.values())
{
buffer.append(change).append(" ");
}
- if (!serverIdToChangeNumber.isEmpty())
+ if (!serverIdToCSN.isEmpty())
buffer.deleteCharAt(buffer.length() - 1);
}
@@ -317,39 +312,37 @@
}
/**
- * Returns the {@code ChangeNumber} contained in this server state which
- * corresponds to the provided server ID.
+ * Returns the {@code CSN} contained in this server state which corresponds to
+ * the provided server ID.
*
* @param serverId
* The server ID.
- * @return The {@code ChangeNumber} contained in this server state which
+ * @return The {@code CSN} contained in this server state which
* corresponds to the provided server ID.
*/
- public ChangeNumber getChangeNumber(int serverId)
+ public CSN getCSN(int serverId)
{
- return serverIdToChangeNumber.get(serverId);
+ return serverIdToCSN.get(serverId);
}
/**
- * Returns the largest (most recent) {@code ChangeNumber} in this server
- * state.
+ * Returns the largest (most recent) {@code CSN} in this server state.
*
- * @return The largest (most recent) {@code ChangeNumber} in this server
- * state.
+ * @return The largest (most recent) {@code CSN} in this server state.
*/
- public ChangeNumber getMaxChangeNumber()
+ public CSN getMaxCSN()
{
- ChangeNumber maxCN = null;
+ CSN maxCSN = null;
- synchronized (serverIdToChangeNumber)
+ synchronized (serverIdToCSN)
{
- for (ChangeNumber tmpMax : serverIdToChangeNumber.values())
+ for (CSN csn : serverIdToCSN.values())
{
- if (maxCN == null || tmpMax.newer(maxCN))
- maxCN = tmpMax;
+ if (maxCSN == null || csn.newer(maxCSN))
+ maxCSN = csn;
}
}
- return maxCN;
+ return maxCSN;
}
/**
@@ -373,14 +366,14 @@
*/
public byte[] getBytes() throws UnsupportedEncodingException
{
- synchronized (serverIdToChangeNumber)
+ synchronized (serverIdToCSN)
{
- final int size = serverIdToChangeNumber.size();
+ final int size = serverIdToCSN.size();
List<String> idList = new ArrayList<String>(size);
- List<String> cnList = new ArrayList<String>(size);
+ List<String> csnList = new ArrayList<String>(size);
// calculate the total length needed to allocate byte array
int length = 0;
- for (Entry<Integer, ChangeNumber> entry : serverIdToChangeNumber
+ for (Entry<Integer, CSN> entry : serverIdToCSN
.entrySet())
{
// serverId is useless, see comment in ServerState ctor
@@ -388,9 +381,9 @@
idList.add(serverIdStr);
length += serverIdStr.length() + 1;
- String changeNumberStr = entry.getValue().toString();
- cnList.add(changeNumberStr);
- length += changeNumberStr.length() + 1;
+ String csnStr = entry.getValue().toString();
+ csnList.add(csnStr);
+ length += csnStr.length() + 1;
}
byte[] result = new byte[length];
@@ -400,7 +393,7 @@
{
String str = idList.get(i);
pos = addByteArray(str.getBytes("UTF-8"), result, pos);
- str = cnList.get(i);
+ str = csnList.get(i);
pos = addByteArray(str.getBytes("UTF-8"), result, pos);
}
return result;
@@ -413,12 +406,12 @@
@Override
public Iterator<Integer> iterator()
{
- return serverIdToChangeNumber.keySet().iterator();
+ return serverIdToCSN.keySet().iterator();
}
/**
- * Check that all the ChangeNumbers in the covered serverState are also in
- * this serverState.
+ * Check that all the CSNs in the covered serverState are also in this
+ * serverState.
*
* @param covered The ServerState that needs to be checked.
* @return A boolean indicating if this ServerState covers the ServerState
@@ -426,7 +419,7 @@
*/
public boolean cover(ServerState covered)
{
- for (ChangeNumber coveredChange : covered.serverIdToChangeNumber.values())
+ for (CSN coveredChange : covered.serverIdToCSN.values())
{
if (!cover(coveredChange))
{
@@ -437,16 +430,16 @@
}
/**
- * Checks that the ChangeNumber given as a parameter is in this ServerState.
+ * Checks that the CSN given as a parameter is in this ServerState.
*
- * @param covered The ChangeNumber that should be checked.
- * @return A boolean indicating if this ServerState contains the ChangeNumber
- * given in parameter.
+ * @param covered The CSN that should be checked.
+ * @return A boolean indicating if this ServerState contains the CSN given in
+ * parameter.
*/
- public boolean cover(ChangeNumber covered)
+ public boolean cover(CSN covered)
{
- ChangeNumber change =
- this.serverIdToChangeNumber.get(covered.getServerId());
+ CSN change =
+ this.serverIdToCSN.get(covered.getServerId());
return change != null && !change.older(covered);
}
@@ -457,7 +450,7 @@
*/
public boolean isEmpty()
{
- return serverIdToChangeNumber.isEmpty();
+ return serverIdToCSN.isEmpty();
}
/**
@@ -467,9 +460,9 @@
public ServerState duplicate()
{
ServerState newState = new ServerState();
- synchronized (serverIdToChangeNumber)
+ synchronized (serverIdToCSN)
{
- newState.serverIdToChangeNumber.putAll(serverIdToChangeNumber);
+ newState.serverIdToCSN.putAll(serverIdToCSN);
}
return newState;
}
@@ -492,21 +485,23 @@
}
int diff = 0;
- for (Integer serverId : ss1.serverIdToChangeNumber.keySet())
+ for (Integer serverId : ss1.serverIdToCSN.keySet())
{
- ChangeNumber cn1 = ss1.serverIdToChangeNumber.get(serverId);
- if (cn1 != null)
+ CSN csn1 = ss1.serverIdToCSN.get(serverId);
+ if (csn1 != null)
{
- ChangeNumber cn2 = ss2.serverIdToChangeNumber.get(serverId);
- if (cn2 != null)
- {
- diff += ChangeNumber.diffSeqNum(cn1, cn2);
- } else {
- // ss2 does not have a change for this server id but ss1, so the
- // server holding ss1 has every changes represented in cn1 in advance
- // compared to server holding ss2, add this amount
- diff += cn1.getSeqnum();
- }
+ CSN csn2 = ss2.serverIdToCSN.get(serverId);
+ if (csn2 != null)
+ {
+ diff += CSN.diffSeqNum(csn1, csn2);
+ }
+ else
+ {
+ // ss2 does not have a change for this server id but ss1, so the
+ // server holding ss1 has every changes represented in csn1 in advance
+ // compared to server holding ss2, add this amount
+ diff += csn1.getSeqnum();
+ }
}
}
@@ -534,23 +529,23 @@
}
/**
- * Build a copy of the ServerState with only ChangeNumbers older than
- * a specific ChangeNumber. This is used when building the initial
+ * Build a copy of the ServerState with only CSNs older than
+ * a specific CSN. This is used when building the initial
* Cookie in the External Changelog, to cope with purged changes.
- * @param cn The ChangeNumber to compare the ServerState with
- * @return a copy of the ServerState which only contains the ChangeNumbers
- * older than cn.
+ * @param csn The CSN to compare the ServerState with
+ * @return a copy of the ServerState which only contains the CSNs older than
+ * csn.
*/
- public ServerState duplicateOnlyOlderThan(ChangeNumber cn)
+ public ServerState duplicateOnlyOlderThan(CSN csn)
{
ServerState newState = new ServerState();
- synchronized (serverIdToChangeNumber)
+ synchronized (serverIdToCSN)
{
- for (ChangeNumber change : serverIdToChangeNumber.values())
+ for (CSN change : serverIdToCSN.values())
{
- if (change.older(cn))
+ if (change.older(csn))
{
- newState.serverIdToChangeNumber.put(change.getServerId(), change);
+ newState.serverIdToCSN.put(change.getServerId(), change);
}
}
}
--
Gitblit v1.10.0