Resilience - Implementation Details

The information in this section applies only to Multiple Resilience Configurations, and to a lesser extent, to Local Database Resilience Configurations. It explains some of the changes to the operation of DP4 when Resilience is in effect.

Database Reads

The information on database Reads applies only to Multiple Resilience Configurations.

Timestamps

All records read via AUXDISTR are returned to the user with a zero timestamp. This has the effect of making it impossible to update a record updated by another user since the start of the reading programs transaction. This can result in commit failures that would not arise in a standalone or simple client/server configuration. For details of this effect see Effect of Networking on Commit Failures.

Reads from Multiple Servers

If a table is set to be accessed on more than one server AUXDISTR will normally only read any particular record from one server. However, there are two situations where internally the record is in fact read from multiple servers:

The details of how AUXDISTR selects the server to read from when the read only needs to go to one server depend on the release of AUXDISTR in use:

Update operations

Update operations involving a table (rec_post(),rec_kill() and rec_autoinc()) held on more than one server are broadcast to all the relevant machines. Usually this can only apply to Multiple Resilience Configurations. However, if the Local Database Resilience using the -nofail error handling option is in effect, updates destined for the remote server are initially posted locally as well. At commit time, such updates are discarded from the local database unless the remote server is offline.

Commit operations

This section applies to both Local Datase Resilience and Multiple Resilience Configurations.

In a Resilience Configuration network failures can give rise to commit failures. This is described in Effect of Networking on Commit Failures.

If the updates performed during a single transaction are distributed between more than one server, DP4 needs to invoke special handling for committing the transaction. This special handling is described in Implementation of Commits.