Replication behavior is consistent and predictable; given a set
of changes to a given replica, the outcome can be predicted—the
changes will be propagated to all other replicas. Devising a
reliable general model for predicting when the changes will
be applied at all other replicas, or at a particular replica, is
impossible, because the future state of the distributed system as a
whole cannot be known. This is called nondeterministic
latency, and applications that use the directory must
understand and allow for it.
The situation is not as complex at it might appear. There are
only three states that an application must accommodate:
Version Skew. This is when none of the changes applied
to a given source replica have propagated to a given destination
replica. An application reading the source replica sees the new
version of the information, while an application reading the
destination sees the old version (or nothing, if the new
information was added for the first time). Version skew applies to
all directory service consumers.
Partial Update. This is when some of the changes applied
to a given source replica have propagated to a given destination
replica. An application reading the source replica sees the new
information, while an application reading the destination sees a
mix of old and new (or only some of the new, if the new information
was added for the first time). Partial update applies to directory
service consumers that use two or more related objects to store
their information.
Fully Replicated State. All of the changes applied to a
given source replica have propagated to a given destination
replica. Applications at the source and destination replicas see
the same information.