From edccd030b94ecc79a7b8ae17ec172cccafce56fb Mon Sep 17 00:00:00 2001
From: mrossign <mrossign@localhost>
Date: Fri, 30 Jan 2009 13:43:02 +0000
Subject: [PATCH] Entry lock may not be released in some cases
---
opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java | 4 ++--
opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendModifyDNOperation.java | 6 +++---
opends/src/server/org/opends/server/replication/protocol/AckMsg.java | 2 +-
opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java | 36 ++++++++++++++++++------------------
opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendDeleteOperation.java | 6 +++---
5 files changed, 27 insertions(+), 27 deletions(-)
diff --git a/opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java b/opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java
index fa6cf27..ff2a806 100644
--- a/opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java
+++ b/opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java
@@ -898,6 +898,24 @@
{
this.saveGenerationId(generationId);
}
+
+ if (!op.isSynchronizationOperation())
+ {
+ // If assured replication is enabled, this will wait for the matching
+ // ack or time out. If assured replication is disabled, this returns
+ // immediately
+ try
+ {
+ waitForAckIfAssuredEnabled(msg);
+ } catch (TimeoutException ex)
+ {
+ // This exception may only be raised if assured replication is
+ // enabled
+ Message errorMsg = NOTE_DS_ACK_TIMEOUT.get(getServiceID(),
+ Long.toString(getAssuredTimeout()), msg.toString());
+ logError(errorMsg);
+ }
+ }
}
else if (!op.isSynchronizationOperation())
{
@@ -909,24 +927,6 @@
pendingChanges.pushCommittedChanges();
}
}
-
- if (!op.isSynchronizationOperation())
- {
- // If assured replication is enabled, this will wait for the matching
- // ack or time out. If assured replication is disabled, this returns
- // immediately
- try
- {
- waitForAckIfAssuredEnabled(msg);
- } catch (TimeoutException ex)
- {
- // This exception may only be raised if assured replication is
- // enabled
- Message errorMsg = NOTE_DS_ACK_TIMEOUT.get(getServiceID(),
- Long.toString(getAssuredTimeout()), msg.toString());
- logError(errorMsg);
- }
- }
}
/**
diff --git a/opends/src/server/org/opends/server/replication/protocol/AckMsg.java b/opends/src/server/org/opends/server/replication/protocol/AckMsg.java
index a0e8399..d53fe19 100644
--- a/opends/src/server/org/opends/server/replication/protocol/AckMsg.java
+++ b/opends/src/server/org/opends/server/replication/protocol/AckMsg.java
@@ -338,7 +338,7 @@
String ackErrorStr = "hasTimeout: " + (hasTimeout ? "yes" : "no") + ", " +
"hasWrongStatus: " + (hasWrongStatus ? "yes" : "no") + ", " +
"hasReplayError: " + (hasReplayError ? "yes" : "no") + ", " +
- " concerned server ids: " + idList;
+ "concerned server ids: " + idList;
return ackErrorStr;
}
diff --git a/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendDeleteOperation.java b/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendDeleteOperation.java
index ccd4c22..152baef 100644
--- a/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendDeleteOperation.java
+++ b/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendDeleteOperation.java
@@ -22,7 +22,7 @@
* CDDL HEADER END
*
*
- * Copyright 2008 Sun Microsystems, Inc.
+ * Copyright 2008-2009 Sun Microsystems, Inc.
*/
package org.opends.server.workflowelement.localbackend;
@@ -417,8 +417,8 @@
}
finally
{
- processPostOperation();
LockManager.unlock(entryDN, entryLock);
+ processSynchPostOperationPlugins();
}
}
@@ -798,7 +798,7 @@
return returnVal;
}
- private void processPostOperation() {
+ private void processSynchPostOperationPlugins() {
for (SynchronizationProvider<?> provider :
DirectoryServer.getSynchronizationProviders()) {
diff --git a/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendModifyDNOperation.java b/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendModifyDNOperation.java
index fcbedd5..1a73ca0 100644
--- a/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendModifyDNOperation.java
+++ b/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendModifyDNOperation.java
@@ -22,7 +22,7 @@
* CDDL HEADER END
*
*
- * Copyright 2008 Sun Microsystems, Inc.
+ * Copyright 2008-2009 Sun Microsystems, Inc.
*/
package org.opends.server.workflowelement.localbackend;
@@ -605,9 +605,9 @@
}
finally
{
- processPostOperation();
LockManager.unlock(entryDN, currentLock);
LockManager.unlock(newDN, newLock);
+ processSynchPostOperationPlugins();
}
}
@@ -1274,7 +1274,7 @@
return returnVal;
}
- private void processPostOperation() {
+ private void processSynchPostOperationPlugins() {
for (SynchronizationProvider<?> provider : DirectoryServer
.getSynchronizationProviders()) {
try {
diff --git a/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java b/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java
index 82d0f6e..d57b74d 100644
--- a/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java
+++ b/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java
@@ -658,8 +658,8 @@
}
finally
{
- processPostOperation();
LockManager.unlock(entryDN, entryLock);
+ processSynchPostOperationPlugins();
}
}
@@ -2328,7 +2328,7 @@
return returnVal;
}
- private void processPostOperation() {
+ private void processSynchPostOperationPlugins() {
for (SynchronizationProvider<?> provider :
DirectoryServer.getSynchronizationProviders()) {
try {
--
Gitblit v1.10.0