From 22ec3dd24c3af40cc6e67318cf83b88e55242d06 Mon Sep 17 00:00:00 2001
From: Chris Ridd <chris.ridd@forgerock.com>
Date: Fri, 18 Jul 2014 08:51:32 +0000
Subject: [PATCH] Forward port fix OPENDJ-1516: Trunk sends MSG_TYPE_REPLICA_OFFLINE messages to a v7 DS
---
opendj3-server-dev/src/server/org/opends/server/replication/protocol/Session.java | 5 +++++
opendj3-server-dev/src/server/org/opends/server/replication/protocol/ReplicaOfflineMsg.java | 4 ++++
opendj3-server-dev/src/server/org/opends/server/replication/protocol/ReplicationMsg.java | 3 ++-
3 files changed, 11 insertions(+), 1 deletions(-)
diff --git a/opendj3-server-dev/src/server/org/opends/server/replication/protocol/ReplicaOfflineMsg.java b/opendj3-server-dev/src/server/org/opends/server/replication/protocol/ReplicaOfflineMsg.java
index a1409cd..b9da59c 100644
--- a/opendj3-server-dev/src/server/org/opends/server/replication/protocol/ReplicaOfflineMsg.java
+++ b/opendj3-server-dev/src/server/org/opends/server/replication/protocol/ReplicaOfflineMsg.java
@@ -90,6 +90,10 @@
@Override
public byte[] getBytes(short protocolVersion)
{
+ if (protocolVersion < ProtocolVersion.REPLICATION_PROTOCOL_V8)
+ {
+ return null;
+ }
final ByteArrayBuilder builder = new ByteArrayBuilder(size());
builder.appendByte(MSG_TYPE_REPLICA_OFFLINE);
builder.appendShort(protocolVersion);
diff --git a/opendj3-server-dev/src/server/org/opends/server/replication/protocol/ReplicationMsg.java b/opendj3-server-dev/src/server/org/opends/server/replication/protocol/ReplicationMsg.java
index 959bcb6..3fef9a1 100644
--- a/opendj3-server-dev/src/server/org/opends/server/replication/protocol/ReplicationMsg.java
+++ b/opendj3-server-dev/src/server/org/opends/server/replication/protocol/ReplicationMsg.java
@@ -107,7 +107,8 @@
* @param protocolVersion
* The protocol version to use for serialization. The version should
* normally be older than the current one.
- * @return The encoded PDU.
+ * @return The encoded PDU, or <code>null</code> if the message isn't supported
+ * in that protocol version.
*/
public abstract byte[] getBytes(short protocolVersion);
diff --git a/opendj3-server-dev/src/server/org/opends/server/replication/protocol/Session.java b/opendj3-server-dev/src/server/org/opends/server/replication/protocol/Session.java
index b6c3c8f..9c1a01c 100644
--- a/opendj3-server-dev/src/server/org/opends/server/replication/protocol/Session.java
+++ b/opendj3-server-dev/src/server/org/opends/server/replication/protocol/Session.java
@@ -319,6 +319,11 @@
public void publish(final ReplicationMsg msg) throws IOException
{
final byte[] buffer = msg.getBytes(protocolVersion);
+ if (buffer == null)
+ {
+ // skip anything that cannot be encoded for this peer.
+ return;
+ }
if (isRunning.get())
{
while (!closeInitiated)
--
Gitblit v1.10.0