From 096707f6f91e33ecdc4dea986c89bf55007b5f2a Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Mon, 06 Apr 2009 12:37:28 +0000
Subject: [PATCH] Fix for 3914 : ServerState.reload() fails to update the ServerState 

---
 opends/src/server/org/opends/server/replication/common/ServerState.java |   27 +++++++++++++++------------
 1 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/common/ServerState.java b/opends/src/server/org/opends/server/replication/common/ServerState.java
index 77437a3..0eac1cf 100644
--- a/opends/src/server/org/opends/server/replication/common/ServerState.java
+++ b/opends/src/server/org/opends/server/replication/common/ServerState.java
@@ -66,7 +66,7 @@
    */
   public void clear()
   {
-    synchronized (this)
+    synchronized (list)
     {
       list.clear();
     }
@@ -155,7 +155,7 @@
 
     saved = false;
 
-    synchronized(this)
+    synchronized(list)
     {
       Short id =  changeNumber.getServerId();
       ChangeNumber oldCN = list.get(id);
@@ -185,11 +185,14 @@
 
     boolean result = false;
 
-    clear();
-    for (Short id : serverState) {
-      ChangeNumber maxChangeNumber = getMaxChangeNumber(id);
-      if (update(maxChangeNumber)) {
-        result = true;
+    synchronized (list)
+    {
+      clear();
+      for (Short id : serverState) {
+        ChangeNumber maxChangeNumber = serverState.getMaxChangeNumber(id);
+        if (this.update(maxChangeNumber)) {
+          result = true;
+        }
       }
     }
 
@@ -211,7 +214,7 @@
   {
     HashSet<String> set = new HashSet<String>();
 
-    synchronized (this)
+    synchronized (list)
     {
       for (Short key  : list.keySet())
       {
@@ -234,7 +237,7 @@
   {
     ArrayList<ByteString> values = new ArrayList<ByteString>(0);
 
-    synchronized (this)
+    synchronized (list)
     {
       for (Short id : list.keySet())
       {
@@ -253,7 +256,7 @@
   {
     StringBuilder buffer = new StringBuilder();
 
-    synchronized (this)
+    synchronized (list)
     {
       for (Short key  : list.keySet())
       {
@@ -298,7 +301,7 @@
    */
   public byte[] getBytes() throws UnsupportedEncodingException
   {
-    synchronized (this)
+    synchronized (list)
     {
       int length = 0;
       List<String> idList = new ArrayList<String>(list.size());
@@ -375,7 +378,7 @@
   public ServerState duplicate()
   {
     ServerState newState = new ServerState();
-    synchronized (this)
+    synchronized (list)
     {
       for (Short key  : list.keySet())
       {

--
Gitblit v1.10.0