diff --git a/configfile.h b/configfile.h index d1eef273..7877dcf7 100644 --- a/configfile.h +++ b/configfile.h @@ -189,6 +189,7 @@ typedef struct /* undocumented test settings */ int promote_delay; + int failover_delay; } t_configuration_options; /* @@ -243,8 +244,9 @@ typedef struct /* barman settings */ \ "", "", "", \ /* rsync/ssh settings */ \ - "", "", \ + "", "", \ /* undocumented test settings */ \ + 0, \ 0 \ } diff --git a/repmgrd-physical.c b/repmgrd-physical.c index 3948f688..5aff2532 100644 --- a/repmgrd-physical.c +++ b/repmgrd-physical.c @@ -4100,6 +4100,12 @@ do_election(NodeInfoList *sibling_nodes, int *new_primary_id) return ELECTION_NOT_CANDIDATE; } + if (config_file_options.failover_delay > 0) + { + log_debug("sleeping %i seconds (\"failover_delay\") before initiating failover", + config_file_options.failover_delay); + sleep(config_file_options.failover_delay); + } /* node priority is set to zero - don't become a candidate, and lose by default */ if (local_node_info.priority <= 0)