blob: 964f5f501f915eb1709cbd5baf308302068a4f4c [file]
/*-------------------------------------------------------------------------
*
* fts.h
* Interface for fault tolerance service (FTS).
*
* IDENTIFICATION
* src/bin/gpfts/fts.h
*
*-------------------------------------------------------------------------
*/
#ifndef USE_INTERNAL_FTS
#ifndef FTS_H
#define FTS_H
#include "nodes/pg_list.h"
#include "postmaster/fts_comm.h"
#define PRIMARY_CONFIG(fts_info) \
fts_info->primary_cdbinfo->config
#define MIRROR_CONFIG(fts_info) \
fts_info->mirror_cdbinfo->config
#define POSTMASTER_IN_STARTUP_MSG "the database system is starting up"
#define POSTMASTER_IN_RECOVERY_MSG "the database system is in recovery mode"
#define POSTMASTER_AFTER_PROMOTE_STANDBY_IN_RECOVERY_DETAIL_MSG "waiting for distributed transaction recovery to complete"
#define POSTMASTER_IN_RECOVERY_DETAIL_MSG "last replayed record at"
#define GP_FTS_PROBE_RETRIES 5
#define GP_FTS_PROBE_TIMEOUT 20
#define GP_FTS_PROBE_INTERVAL 60
#define FTS_ETCD_CONF_FILE_NAME "bin/config/cbdb_etcd_default.conf"
#define FTS_GPHOME_PATH "GPHOME"
#define FTS_CBDB_PATH "COORDINATOR_DATA_DIRECTORY"
#define FTS_CBDB_PATH_LEN 256
#define FTS_ETCD_HA_LOCK_KEY "fts_ha_lock"
#define FTS_ETCD_HA_HOSTNAME_KEY "fts_ha_hostname"
#define FTS_HOSTNAME_LEN 128
#define FTS_ETCD_PATH_KEY_LEN 256
#define FTS_ETCD_LOCK_RETRY_WAIT 10
#define FTS_ETCD_LEASE_PROBE 8
#define FTS_DNS_WAIT_TIMEOUT 60
typedef struct {
int probe_retries;
int probe_timeout;
int probe_interval;
char *connstr_source;
bool disable_promote_standby;
bool one_round;
} fts_config;
extern bool FtsIsActive(void);
extern void SetSkipFtsProbe(bool skipFtsProbe);
void FtsProbeMain(int argc, char **argv);
CdbComponentDatabases * getCdbComponents();
void initCdbComponentDatabases(GpSegConfigEntry * configs, int total_dbs);
#define REWRITE_SEGMENTS_INFO_SQL \
"SELECT pg_catalog.gp_rewrite_segments_info('%s');"
#define CONNECTION_SOURCE_ONLY_USER "%s"
#define CONNECTION_SOURCE_TEMPLATE_WITH_UP "postgresql://%s@%s:%d/postgres"
#define CONNECTION_SOURCE_TEMPLATE "postgresql://%s:%d/postgres"
#define FAILOVER_SEGMENT_CHECK_BACK_PATH "failover/segment_check_back.sh"
#define FAILOVER_SEGMENT_ALL_DOWN_PATH "failover/segment_all_down.sh"
#define FAILOVER_MASTER_CHECK_BACK_PATH "failover/master_check_back.sh"
#define FTS_LOG_FILE_DIRECTORY_DEFAULT "log/fts"
#define FTS_LOG_FILE_DIRECTORY_TMP "/tmp/fts"
#define FTS_LOG_FILE_NAME_DEFAULT "fts"
#define FTS_MAX_DIRECTORY_NAME 200
extern char *bindir;
extern bool disable_auto_failover;
extern bool immediately_auto_failover;
#endif /* FTS_H */
#endif