From aefad4e6cfa33be9eca8cda45861d98236d0faed Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Thu, 18 Jan 2007 09:20:48 +0000
Subject: [PATCH] put back the 980 revision that had been removed because of a regression. - fix the regression (schema problem) - disabled the ChangelogTest.stopChangelog() test that appear to cause some hangs.
---
opends/src/server/org/opends/server/synchronization/plugin/PersistentServerState.java | 100 ++++++++++++++++++++++++++-----------------------
1 files changed, 53 insertions(+), 47 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 f2c2d70..fd1f3d1 100644
--- a/opends/src/server/org/opends/server/synchronization/plugin/PersistentServerState.java
+++ b/opends/src/server/org/opends/server/synchronization/plugin/PersistentServerState.java
@@ -118,57 +118,18 @@
return;
savedStatus = true;
-
- 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)
+ ResultCode resultCode = updateStateEntry();
+ if (resultCode != ResultCode.SUCCESS)
{
- /*
- * 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)
+ if (resultCode == ResultCode.NO_SUCH_OBJECT)
{
- 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;
- }
+ createStateEntry();
}
else
- done = true;
+ {
+ savedStatus = false;
+
+ }
}
}
@@ -297,6 +258,51 @@
}
/**
+ * 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