From 3a9e211d36ee94ff99941943b3b51e0f768624f5 Mon Sep 17 00:00:00 2001
From: mrossign <mrossign@localhost>
Date: Fri, 06 Nov 2009 09:11:40 +0000
Subject: [PATCH] In order to support a more clever algorithm for the DS to choose his RS, we introduce:
---
opends/src/server/org/opends/server/replication/protocol/TopologyMsg.java | 27 +++++++++++++++++++++------
1 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/opends/src/server/org/opends/server/replication/protocol/TopologyMsg.java b/opends/src/server/org/opends/server/replication/protocol/TopologyMsg.java
index f357409..85a4d1d 100644
--- a/opends/src/server/org/opends/server/replication/protocol/TopologyMsg.java
+++ b/opends/src/server/org/opends/server/replication/protocol/TopologyMsg.java
@@ -167,6 +167,7 @@
if (version >= ProtocolVersion.REPLICATION_PROTOCOL_V4)
{
+ // Put ECL includes
Set<String> attrs = dsInfo.getEclIncludes();
oStream.write(attrs.size());
for (String attr : attrs)
@@ -192,8 +193,15 @@
oStream.write(String.valueOf(rsInfo.getGenerationId()).
getBytes("UTF-8"));
oStream.write(0);
- // Put DS group id
+ // Put RS group id
oStream.write(rsInfo.getGroupId());
+
+ if (version >= ProtocolVersion.REPLICATION_PROTOCOL_V4)
+ {
+ // Put RS weight
+ oStream.write(String.valueOf(rsInfo.getWeight()).getBytes("UTF-8"));
+ oStream.write(0);
+ }
}
return oStream.toByteArray();
@@ -332,23 +340,30 @@
int length = getNextLength(in, pos);
String serverIdString = new String(in, pos, length, "UTF-8");
int id = Integer.valueOf(serverIdString);
- pos +=
- length + 1;
+ pos += length + 1;
/* Read the generation id */
length = getNextLength(in, pos);
long generationId =
Long.valueOf(new String(in, pos, length,
"UTF-8"));
- pos +=
- length + 1;
+ pos += length + 1;
/* Read RS group id */
byte groupId = in[pos++];
+ int weight = 1;
+ if (version >= ProtocolVersion.REPLICATION_PROTOCOL_V4)
+ {
+ /* Read RS weight */
+ length = getNextLength(in, pos);
+ weight = Integer.valueOf(new String(in, pos, length, "UTF-8"));
+ pos += length + 1;
+ }
+
/* Now create RSInfo and store it in list */
- RSInfo rsInfo = new RSInfo(id, generationId, groupId);
+ RSInfo rsInfo = new RSInfo(id, generationId, groupId, weight);
rsList.add(rsInfo);
nRsInfo--;
--
Gitblit v1.10.0