From 9c31cbe94407a9986e221bd1a05fb51ad51eb8cf Mon Sep 17 00:00:00 2001
From: fdorson <fdorson@localhost>
Date: Mon, 07 Jul 2008 14:45:19 +0000
Subject: [PATCH] 2nd try: fix for issue #3317 : Removing replication links requires re-start of the server and issue #3363 : NullPointerException in ReplicationBroker.java
---
opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java | 30 ++++++++++++++++++++++++++++++
1 files changed, 30 insertions(+), 0 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
index 47058ec..14de2c9 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
@@ -627,9 +627,13 @@
{
// Changing those properties don't need specific code.
// They will be applied for next connections.
+
+ disconnectRemovedReplicationServers(configuration.getReplicationServer());
+
replicationServers = configuration.getReplicationServer();
if (replicationServers == null)
replicationServers = new ArrayList<String>();
+
queueSize = configuration.getQueueSize();
long newPurgeDelay = configuration.getReplicationPurgeDelay();
if (newPurgeDelay != purgeDelay)
@@ -1024,4 +1028,30 @@
}
}
}
+
+ /**
+ * Compute the list of replication servers that are not any
+ * more connected to this Replication Server and stop the
+ * corresponding handlers.
+ * @param newReplServers the list of the new replication servers configured.
+ */
+ private void disconnectRemovedReplicationServers(
+ Collection<String> newReplServers)
+ {
+ Collection<String> serversToDisconnect = new ArrayList<String>();
+
+ for (String server: replicationServers)
+ {
+ if (!newReplServers.contains(server))
+ serversToDisconnect.add(server);
+ }
+
+ if (serversToDisconnect.isEmpty())
+ return;
+
+ for (ReplicationServerDomain replicationServerDomain: baseDNs.values())
+ {
+ replicationServerDomain.stopServers(serversToDisconnect);
+ }
+ }
}
--
Gitblit v1.10.0