From 9f0dae3d08ca0cf7c131af2f1fc09670ace301fa Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Thu, 13 Mar 2008 14:26:23 +0000
Subject: [PATCH] Fix for 3052 : IllegalMonitorStateException in replication HeartbeatThread
---
opends/src/server/org/opends/server/replication/protocol/HeartbeatThread.java | 9 +++++----
opends/src/server/org/opends/server/replication/server/ServerHandler.java | 2 +-
opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java | 10 +++++-----
opends/src/server/org/opends/server/replication/server/DbHandler.java | 5 +++--
4 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/opends/src/server/org/opends/server/replication/protocol/HeartbeatThread.java b/opends/src/server/org/opends/server/replication/protocol/HeartbeatThread.java
index ef6b6aa..8341a6e 100644
--- a/opends/src/server/org/opends/server/replication/protocol/HeartbeatThread.java
+++ b/opends/src/server/org/opends/server/replication/protocol/HeartbeatThread.java
@@ -68,6 +68,7 @@
* Set this to stop the thread.
*/
private Boolean shutdown = false;
+ private final Object shutdown_lock = new Object();
/**
@@ -135,11 +136,11 @@
TRACER.debugVerbose("Heartbeat thread sleeping for %d", sleepTime);
}
- synchronized (shutdown)
+ synchronized (shutdown_lock)
{
if (!shutdown)
{
- shutdown.wait(sleepTime);
+ shutdown_lock.wait(sleepTime);
}
}
}
@@ -173,10 +174,10 @@
*/
public void shutdown()
{
- synchronized (shutdown)
+ synchronized (shutdown_lock)
{
- shutdown.notifyAll();
shutdown = true;
+ shutdown_lock.notifyAll();
if (debugEnabled())
{
TRACER.debugInfo("Going to notify Heartbeat thread.");
diff --git a/opends/src/server/org/opends/server/replication/server/DbHandler.java b/opends/src/server/org/opends/server/replication/server/DbHandler.java
index b0688e7..14ec358 100644
--- a/opends/src/server/org/opends/server/replication/server/DbHandler.java
+++ b/opends/src/server/org/opends/server/replication/server/DbHandler.java
@@ -79,7 +79,8 @@
// Changes are not read back by replicationServer threads that are responsible
// for pushing the changes to other replication server or to LDAP server
//
- private LinkedList<UpdateMessage> msgQueue = new LinkedList<UpdateMessage>();
+ private final LinkedList<UpdateMessage> msgQueue =
+ new LinkedList<UpdateMessage>();
private ReplicationDB db;
private ChangeNumber firstChange = null;
private ChangeNumber lastChange = null;
@@ -89,7 +90,7 @@
private boolean shutdown = false;
private boolean done = false;
private DirectoryThread thread = null;
- private Object flushLock = new Object();
+ private final Object flushLock = new Object();
private ReplicationServer replicationServer;
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 6281f9e..5215f7c 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
@@ -80,8 +80,8 @@
*/
public class ReplicationServerDomain
{
- private Object flowControlLock = new Object();
- private DN baseDn = null;
+ private final Object flowControlLock = new Object();
+ private final DN baseDn;
/*
* The following map contains one balanced tree for each replica ID
@@ -93,7 +93,7 @@
* to this replication server.
*
*/
- private Map<Short, ServerHandler> connectedServers =
+ private final Map<Short, ServerHandler> connectedServers =
new ConcurrentHashMap<Short, ServerHandler>();
/*
@@ -106,14 +106,14 @@
* to this replication server.
*/
- private Map<Short, ServerHandler> replicationServers =
+ private final Map<Short, ServerHandler> replicationServers =
new ConcurrentHashMap<Short, ServerHandler>();
/*
* This map contains the List of updates received from each
* LDAP server
*/
- private Map<Short, DbHandler> sourceDbHandlers =
+ private final Map<Short, DbHandler> sourceDbHandlers =
new ConcurrentHashMap<Short, DbHandler>();
private ReplicationServer replicationServer;
diff --git a/opends/src/server/org/opends/server/replication/server/ServerHandler.java b/opends/src/server/org/opends/server/replication/server/ServerHandler.java
index 53c038c..68b2ba0 100644
--- a/opends/src/server/org/opends/server/replication/server/ServerHandler.java
+++ b/opends/src/server/org/opends/server/replication/server/ServerHandler.java
@@ -129,7 +129,7 @@
* this collection will contain as many elements as there are
* LDAP servers connected to the remote replication server.
*/
- private Map<Short, LightweightServerHandler> connectedServers =
+ private final Map<Short, LightweightServerHandler> connectedServers =
new ConcurrentHashMap<Short, LightweightServerHandler>();
/**
--
Gitblit v1.10.0