| | |
| | | { |
| | | 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()) |
| | | { |
| | |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | String ackErrorStr = "hasTimeout: " + (hasTimeout ? "yes" : "no") + ", " + |
| | | "hasWrongStatus: " + (hasWrongStatus ? "yes" : "no") + ", " + |
| | | "hasReplayError: " + (hasReplayError ? "yes" : "no") + ", " + |
| | | " concerned server ids: " + idList; |
| | | "concerned server ids: " + idList; |
| | | |
| | | return ackErrorStr; |
| | | } |
| | |
| | | * CDDL HEADER END |
| | | * |
| | | * |
| | | * Copyright 2008 Sun Microsystems, Inc. |
| | | * Copyright 2008-2009 Sun Microsystems, Inc. |
| | | */ |
| | | package org.opends.server.workflowelement.localbackend; |
| | | |
| | |
| | | } |
| | | finally |
| | | { |
| | | processPostOperation(); |
| | | LockManager.unlock(entryDN, entryLock); |
| | | processSynchPostOperationPlugins(); |
| | | } |
| | | } |
| | | |
| | |
| | | return returnVal; |
| | | } |
| | | |
| | | private void processPostOperation() { |
| | | private void processSynchPostOperationPlugins() { |
| | | |
| | | for (SynchronizationProvider<?> provider : |
| | | DirectoryServer.getSynchronizationProviders()) { |
| | |
| | | * CDDL HEADER END |
| | | * |
| | | * |
| | | * Copyright 2008 Sun Microsystems, Inc. |
| | | * Copyright 2008-2009 Sun Microsystems, Inc. |
| | | */ |
| | | package org.opends.server.workflowelement.localbackend; |
| | | |
| | |
| | | } |
| | | finally |
| | | { |
| | | processPostOperation(); |
| | | LockManager.unlock(entryDN, currentLock); |
| | | LockManager.unlock(newDN, newLock); |
| | | processSynchPostOperationPlugins(); |
| | | } |
| | | } |
| | | |
| | |
| | | return returnVal; |
| | | } |
| | | |
| | | private void processPostOperation() { |
| | | private void processSynchPostOperationPlugins() { |
| | | for (SynchronizationProvider<?> provider : DirectoryServer |
| | | .getSynchronizationProviders()) { |
| | | try { |
| | |
| | | } |
| | | finally |
| | | { |
| | | processPostOperation(); |
| | | LockManager.unlock(entryDN, entryLock); |
| | | processSynchPostOperationPlugins(); |
| | | } |
| | | } |
| | | |
| | |
| | | return returnVal; |
| | | } |
| | | |
| | | private void processPostOperation() { |
| | | private void processSynchPostOperationPlugins() { |
| | | for (SynchronizationProvider<?> provider : |
| | | DirectoryServer.getSynchronizationProviders()) { |
| | | try { |