Assured replication uses a Replication Assurance Policy to define the properties needed to ensure that replication has satisfactorily completed before the update response is returned to the client. Multiple policies can be defined but only one policy is matched with a client update request. Each policy contains an evaluation order index which, together with an optional request and connection criteria, provides flexibility in matching a policy to request.

The Replication Assurance Policy defines local and remote assurance levels. A level defines how rigorous the policy should be when waiting for propagation of updates, while local and remote distinguish servers in the same location versus servers in remote locations. Although optional, it is recommended that request or connection criteria be associated with a policy to apply replication assurance appropriately.

The Directory Server contains a Default Replication Assurance Policy that is enabled but has no assurance levels assigned. In addition to using the Default Replication Assurance Policy, any number of policies can be created and enabled. When a client request is received, the server iterates through the list of enabled policies according to each policy's evaluation-order-index property. A smaller evaluation-order-index value (e.g., 1) has precedence over policies with larger evaluation-order-index values (e.g., 2, 3, 4, etc.). The evaluation-order-index values do not need to be contiguous. The first policy that matches a request is associated with the operation.

The Replication Assurance Policy, which is defined on the PingDirectory Server and not on the PingDirectoryProxy Server, has the following properties:
  • evaluation-order-index. Determines the evaluation order (the smaller value has precedence) among multiple Replication Assurance Policies that match against an operation.
  • local-level. Specifies the assurance level used to replicate to local servers. A local server is defined as a server with the same location property value as set in the global configuration. The local-level property must be set to an assurance level as strict as the remote-level property. For example, if the remote-level is set to "processed-all-remote-locations," then the local-level property must be "processed-all-servers."
    • None. Replication to any local server is not assured.
    • received-any-server. At least one available local server must receive a replication update before a response is sent to the client.
    • processed-all-servers. All available local servers must complete replay of the replication update before the response is sent to the client. If a singular server is enabled, or only one server is available for a particular location, processed-all-servers will return a value of false.
  • remote-level. Specifies the assurance level used to replicate to remote servers. A remote server is defined as a server that has a different location property value as set in the global configuration.
    • None. Replication to any remote server is not assured.
    • received-any-remote-location. At least one server at any available remote location must receive a replication update before a response is sent to the client.
    • received-all-remote-locations. All available remote servers must receive a replication update before the response is sent to the client.
    • processed-all-remote-servers. All available servers at all locations must complete replay of the replication update before the response is sent to the client. If a single server is enabled, or only one server is available for a particular location, processed-all-remote-servers will return a value of false.
  • timeout. Specifies the maximum length of time to wait for the replication assurance requirements to be met before timeout and replying to the client.
  • connection-criteria. Specifies connection criteria used to indicate which operations from clients matching this criteria use this policy. If both connection criteria and request criteria are specified for a policy, then both must match an operation for the policy to be assigned.
  • request-criteria. Specifies request criteria used to indicate which operations from clients matching this criteria use this policy. If both connection criteria and a request criteria are specified for a policy, then both must match an operation for the policy to be assigned.

Servers in a replication topology are not required to share a homogeneous set of policies; you can configure the Replication Assurance Policies differently on the replicas in a topology. For example, if you configure server A to match add operations to a processed-all-servers assurance level, and server B to match add operations to a local received-any-server level, then add operations received on server A will have the assurance level of processed-all-servers and add operations received on server B will have the assurance level of received-any-server.

For more detailed information, see the PingDirectory Server Configuration Reference Guide.