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/tests/unit-tests-testng/src/server/org/opends/server/replication/common/ServerStateTest.java              |   25 +++++++++++++++++++++++++
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/MonitorTest.java                  |    4 ++--
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/AssuredReplicationServerTest.java |    2 +-
 opends/src/server/org/opends/server/replication/common/ServerState.java                                          |   27 +++++++++++++++------------
 opends/src/server/org/opends/server/replication/server/DbHandler.java                                            |    2 +-
 5 files changed, 44 insertions(+), 16 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())
       {
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 ac7f7dd..960cd6f 100644
--- a/opends/src/server/org/opends/server/replication/server/DbHandler.java
+++ b/opends/src/server/org/opends/server/replication/server/DbHandler.java
@@ -550,7 +550,7 @@
       ArrayList<Attribute> attributes = new ArrayList<Attribute>();
       attributes.add(Attributes.create("replicationServer-database",
           String.valueOf(serverId)));
-      attributes.add(Attributes.create("base-dn", baseDn.toString()));
+      attributes.add(Attributes.create("domain-name", baseDn.toString()));
       if (firstChange != null)
       {
         Date firstTime = new Date(firstChange.getTime());
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/common/ServerStateTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/common/ServerStateTest.java
index 5eb38fb..cd1eb1e 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/common/ServerStateTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/common/ServerStateTest.java
@@ -107,11 +107,36 @@
     // Check getBytes
     byte[] b = serverState.getBytes();
     ServerState generatedServerState = new ServerState(b,0,b.length -1) ;
+
+
+
     assertEquals(b, generatedServerState.getBytes()) ;
 
   }
 
   /**
+   * Create a new ServerState object
+   */
+  @Test(dataProvider = "changeNumberData")
+  public void serverStateReloadTest(ChangeNumber cn)
+  throws Exception
+  {
+    ChangeNumber cn1, cn3;
+    cn1 = new ChangeNumber(cn.getTime()+1,cn.getSeqnum(),cn.getServerId());
+    cn3 = new ChangeNumber(cn1.getTime(),cn1.getSeqnum(),(short)(cn1.getServerId()+1));
+
+    ServerState state1 = new ServerState();
+    state1.update(cn1);
+    state1.update(cn3);
+
+    ServerState state2 = new ServerState();
+    state2.reload(state1);
+
+    assertEquals(state1.toString(), state2.toString()) ;
+
+  }
+
+  /**
    * Ensures that the Directory Server is able to
    * translate a ruv entry to a sever state.
    *
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/AssuredReplicationServerTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/AssuredReplicationServerTest.java
index 762033e..5eef7ee 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/AssuredReplicationServerTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/AssuredReplicationServerTest.java
@@ -1486,7 +1486,7 @@
   @DataProvider(name = "testSafeDataLevelHighProvider")
   private Object[][] testSafeDataLevelHighProvider()
   {
-    // Constrcut all possible combinations of parameters
+    // Construct all possible combinations of parameters
     List<List<Object>> objectArrayList = new ArrayList<List<Object>>();
 
     // Safe Data Level
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/MonitorTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/MonitorTest.java
index 962af1c..43b95ea 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/MonitorTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/MonitorTest.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2008 Sun Microsystems, Inc.
+ *      Copyright 2008-2009 Sun Microsystems, Inc.
  */
 package org.opends.server.replication.server;
 
@@ -533,7 +533,7 @@
       "-w", "password",
       "-b", "cn=monitor",
       "-s", "sub",
-      "(base-dn=*)"
+      "(domain-name=*)"
     };
 
     oStream.reset();

--
Gitblit v1.10.0