From 067771ecaf547a6a25a52f4c8a38575d0dbd8015 Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Tue, 16 Jan 2007 20:13:21 +0000
Subject: [PATCH] Revert the changes made in revision 980 because they appear to be responsible for a number of test case failures and a potential deadlock.
---
opends/src/server/org/opends/server/synchronization/plugin/PersistentServerState.java | 100 +++++++++++++++++++++++--------------------------
1 files changed, 47 insertions(+), 53 deletions(-)
diff --git a/opends/src/server/org/opends/server/synchronization/plugin/PersistentServerState.java b/opends/src/server/org/opends/server/synchronization/plugin/PersistentServerState.java
index fd1f3d1..f2c2d70 100644
--- a/opends/src/server/org/opends/server/synchronization/plugin/PersistentServerState.java
+++ b/opends/src/server/org/opends/server/synchronization/plugin/PersistentServerState.java
@@ -118,18 +118,57 @@
return;
savedStatus = true;
- ResultCode resultCode = updateStateEntry();
- if (resultCode != ResultCode.SUCCESS)
+
+ ArrayList<ASN1OctetString> values = this.toASN1ArrayList();
+
+ if (values.size() == 0)
+ return;
+
+ LDAPAttribute attr =
+ new LDAPAttribute(SYNCHRONIZATION_STATE, values);
+ LDAPModification mod = new LDAPModification(ModificationType.REPLACE, attr);
+ ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>(1);
+ mods.add(mod);
+
+ boolean done = false;
+ while (!done)
{
- if (resultCode == ResultCode.NO_SUCH_OBJECT)
+ /*
+ * Generate a modify operation on the Server State Entry :
+ * cn=ffffffff-ffffffff-ffffffff-ffffffff, baseDn
+ */
+ ModifyOperation op =
+ new ModifyOperation(conn, InternalClientConnection.nextOperationID(),
+ InternalClientConnection.nextMessageID(),
+ new ArrayList<Control>(0), serverStateAsn1Dn,
+ mods);
+ op.setInternalOperation(true);
+ op.setSynchronizationOperation(true);
+
+ op.run();
+ ResultCode resultCode = op.getResultCode();
+ if (resultCode != ResultCode.SUCCESS)
{
- createStateEntry();
+ if (resultCode == ResultCode.NO_SUCH_OBJECT)
+ {
+ createStateEntry();
+ }
+ else
+ {
+ savedStatus = false;
+ int msgID = MSGID_ERROR_UPDATING_RUV;
+ String message = getMessage(msgID,
+ op.getResultCode().getResultCodeName(),
+ op.toString(), op.getErrorMessage(),
+ baseDn.toString());
+ logError(ErrorLogCategory.SYNCHRONIZATION,
+ ErrorLogSeverity.SEVERE_ERROR,
+ message, msgID);
+ break;
+ }
}
else
- {
- savedStatus = false;
-
- }
+ done = true;
}
}
@@ -258,51 +297,6 @@
}
/**
- * Save the current values of this PersistentState object
- * in the appropiate entry of the database.
- *
- * @return a ResultCode indicating if the method was successfull.
- */
- private ResultCode updateStateEntry()
- {
- /*
- * Generate a modify operation on the Server State Entry :
- * cn=ffffffff-ffffffff-ffffffff-ffffffff, baseDn
- */
- ArrayList<ASN1OctetString> values = this.toASN1ArrayList();
-
- if (values.size() == 0)
- return ResultCode.SUCCESS;
-
- LDAPAttribute attr =
- new LDAPAttribute(SYNCHRONIZATION_STATE, values);
- LDAPModification mod = new LDAPModification(ModificationType.REPLACE, attr);
- ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>(1);
- mods.add(mod);
-
- ModifyOperation op =
- new ModifyOperation(conn, InternalClientConnection.nextOperationID(),
- InternalClientConnection.nextMessageID(),
- new ArrayList<Control>(0), serverStateAsn1Dn,
- mods);
- op.setInternalOperation(true);
- op.setSynchronizationOperation(true);
-
- op.run();
-
- ResultCode result = op.getResultCode();
- if (result != ResultCode.SUCCESS)
- {
- int msgID = MSGID_ERROR_UPDATING_RUV;
- String message = getMessage(msgID, op.getResultCode().getResultCodeName(),
- op.toString(), op.getErrorMessage(), baseDn.toString());
- logError(ErrorLogCategory.SYNCHRONIZATION, ErrorLogSeverity.SEVERE_ERROR,
- message, msgID);
- }
- return result;
- }
-
- /**
* Get the Dn where the ServerState is stored.
* @return Returns the serverStateDn.
*/
--
Gitblit v1.10.0