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