DbEnv::repmgr_set_ack_policy()

#include <db_cxx.h>

int
DbEnv::repmgr_set_ack_policy(int ack_policy); 

The DbEnv::repmgr_set_ack_policy() method specifies how master and client sites will handle acknowledgment of replication messages which are necessary for "permanent" records. View sites never send these acknowledgements and are not counted by any acknowledgement policy. The current implementation requires all sites in a replication group to configure the same acknowledgement policy.

The database environment's replication subsystem may also be configured using the environment's DB_CONFIG file. The syntax of the entry in that file is a single line with the string "repmgr_set_ack_policy", one or more whitespace characters, and the ack_policy parameter specified as a string. For example, "repmgr_set_ack_policy DB_REPMGR_ACKS_ALL". Because the DB_CONFIG file is read when the database environment is opened, it will silently overrule configuration done before that time.

Waiting for client acknowledgements is always limited by the DB_REP_ACK_TIMEOUT specified by the DbEnv::rep_set_timeout() method. If an insufficient number of client acknowledgements have been received, then the master will invoke the event callback function, if set, with the DB_EVENT_REP_PERM_FAILED value. (See the Choosing a Replication Manager Ack Policy section in the Berkeley DB Programmer's Reference Guide for more information.)

The DbEnv::repmgr_set_ack_policy() method configures a database environment, not only operations performed using the specified DbEnv handle.

The DbEnv::repmgr_set_ack_policy() method may be called at any time during the life of the application.

The DbEnv::repmgr_set_ack_policy() method either returns a non-zero error value or throws an exception that encapsulates a non-zero error value on failure, and returns 0 on success.

Parameters

ack_policy

Some acknowledgement policies use the concept of an electable peer, which is a client capable of being subsequently elected master of the replication group. The ack_policy parameter must be set to one of the following values:

  • DB_REPMGR_ACKS_ALL

    The master should wait until all replication clients have acknowledged each permanent replication message.

  • DB_REPMGR_ACKS_ALL_AVAILABLE

    The master should wait until all currently connected replication clients have acknowledged each permanent replication message. This policy will then invoke the DB_EVENT_REP_PERM_FAILED event if fewer than a quorum of clients acknowledged during that time.

  • DB_REPMGR_ACKS_ALL_PEERS

    The master should wait until all electable peers have acknowledged each permanent replication message.

  • DB_REPMGR_ACKS_NONE

    The master should not wait for any client replication message acknowledgments.

  • DB_REPMGR_ACKS_ONE

    The master should wait until at least one client site has acknowledged each permanent replication message.

  • DB_REPMGR_ACKS_ONE_PEER

    The master should wait until at least one electable peer has acknowledged each permanent replication message.

  • DB_REPMGR_ACKS_QUORUM

    The master should wait until it has received acknowledgements from the minimum number of electable peers sufficient to ensure that the effect of the permanent record remains durable if an election is held. This is the default acknowledgement policy.

Errors

The DbEnv::repmgr_set_ack_policy() method may fail and throw a DbException exception, encapsulating one of the following non-zero errors, or return one of the following non-zero errors:

EINVAL

If this method is called from a base replication API application; or if an invalid flag value or parameter was specified.

Class

DbEnv

See Also

Replication and Related Methods