Techniques used in an automatic failover configuration having a primary
database system, a standby database system, and an observer for
preventing divergence among the primary and standby database systems
while increasing the availability of the primary database system. In the
automatic failover configuration, the primary database system remains
available even in the absence of both the standby and the observer as
long as the standby and the observer become absent sequentially. The
failover configuration further permits automatic failover only when the
observer is present and the standby and the primary are synchronized and
inhibits state changes during failover. The database systems and the
observer have copies of failover configuration state and the techniques
include techniques for propagating the most recent version of the state
among the databases and the observer and techniques for using
carefully-ordered writes to ensure that state changes are propagated in a
fashion which prevents divergence.