Updates to the Directory Server entries in a replication topology can happen independently because replication guarantees only eventual consistency and not strong consistency. The eventual consistency model enables applying conflicting changes at different directory server instances. In most cases, the Directory Server can resolve these conflicts automatically and in a consistent manner: for example, all directory server instances in a replication topology resolving each and every conflict the same way. However, in some scenarios, manual administrative action is required. For any of these unresolved conflicts, the administrator receives notification through administrative alerts.

On a high level, the conflict resolution algorithm tries to resolve conflicts as if the operations causing the conflict in a distributed environment apply to a single directory server instance. For example, if the same entry is added to two different directory server instances at about the same time, after these operations are replicated, both directory servers keep only the first entry added.

The following image highlights the differences between standalone versus replicated environments.

Conflicting Operations in Standalone versus Replicated Environments
Canvas 1 Layer 1 Directory Server Directory Standalone dn: uid=babs.jensen, … changetype: modify add: displayName displayName: Babs 1 2 dn: uid=babs.jensen, … changetype: modify add: displayName displayName: Barbara 3 4 Replicated dn: uid=babs.jensen, … changetype: modify add: displayName displayName: Babs Directory Server A 1 2 Directory Server B 5 dn: uid=babs.jensen, … changetype: modify add: displayName displayName: Barbara Directory Directory 6 6 Conflict Resolution Conflict Resolution 3 4 Failure Success LDAP Replication

Processing steps

  1. Client sends LDAP modify request to Directory Server and succeeds.
  2. Client sends another LDAP modify request that conflicts with the first.
  3. In the standalone case, the request is rejected. In the replicated case, the request succeeds.
  4. Replication propagates the updates (replicated only).
  5. Conflict resolution (replicated only): A ignores the update from B. Be sets the attribute value to the value on A.