From de31d33cb934a7ec46beedfbf25fe0f069ac0cfa Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Mon, 30 Nov 2009 09:36:32 +0000
Subject: [PATCH] Fix for 4373 : Replication initialization can take a long time at startup
---
opends/src/server/org/opends/server/replication/server/ReplicationServer.java | 3 ++-
opends/src/server/org/opends/server/replication/plugin/MultimasterReplication.java | 8 ++++++++
opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java | 2 +-
3 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/opends/src/server/org/opends/server/replication/plugin/MultimasterReplication.java b/opends/src/server/org/opends/server/replication/plugin/MultimasterReplication.java
index e34aa13..c738d45 100644
--- a/opends/src/server/org/opends/server/replication/plugin/MultimasterReplication.java
+++ b/opends/src/server/org/opends/server/replication/plugin/MultimasterReplication.java
@@ -119,6 +119,8 @@
private boolean isRegistered = false;
+ private static boolean initializationCompleted = true;
+
/**
* Finds the domain for a given DN.
*
@@ -268,6 +270,7 @@
ReplicationSynchronizationProviderCfg configuration)
throws ConfigException
{
+ initializationCompleted = false;
domains.clear();
replicationServerListener = new ReplicationServerListener(configuration);
@@ -307,6 +310,8 @@
DirectoryServer.registerSupportedControl(
ReplicationRepairRequestControl.OID_REPLICATION_REPAIR_CONTROL);
+
+ initializationCompleted = true;
}
/**
@@ -843,6 +848,9 @@
*/
public static boolean isLocalServerId(Integer serverId)
{
+ if (!initializationCompleted)
+ return true;
+
for (LDAPReplicationDomain domain : domains.values())
{
if (domain.getServerId() == serverId)
diff --git a/opends/src/server/org/opends/server/replication/server/ReplicationServer.java b/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
index 28a8fc4..056667d 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
@@ -1608,7 +1608,8 @@
// Copy the list of domains as a new domain may arrive or disappear between
// the initializeMonitorData and completeMonitorData calls
- List<ReplicationServerDomain> rsdList = new ArrayList(baseDNs.values());
+ List<ReplicationServerDomain> rsdList =
+ new ArrayList<ReplicationServerDomain>(baseDNs.values());
for (ReplicationServerDomain domain : rsdList)
{
diff --git a/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java b/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
index 0c455f6..be04977 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
@@ -164,7 +164,7 @@
*/
private MonitorData monitorData = new MonitorData();
private MonitorData wrkMonitorData;
- private Object monitorDataLock = new Object();
+ private final Object monitorDataLock = new Object();
/**
* The needed info for each received assured update message we are waiting
--
Gitblit v1.10.0