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