Dynamic primary
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2024-04-06 03:30:20 +02:00
parent 5a07511649
commit 94fb25467a

31
main.go
View File

@@ -414,11 +414,36 @@ func configure(state *global, messageSnapshot []pgpoolConfigMessage) {
// Streaming Replication Check settings
// https://www.pgpool.net/docs/latest/en/html/runtime-streaming-replication-check.html
conf["sr_check_user"] = getEnvOrDefault("PGPOOL_SR_CHECK_USER", "")
conf["sr_check_password"] = getEnvOrDefault("PGPOOL_SR_CHECK_PASSWORD", "")
srCheckUser := getEnvOrDefault("PGPOOL_SR_CHECK_USER", "")
srCheckPassword := getEnvOrDefault("PGPOOL_SR_CHECK_PASSWORD", "")
srCheckPasswordPath := os.Getenv("PGPOOL_SR_CHECK_PASSWORD_FILE")
if srCheckPasswordFile, err := os.Stat(srCheckPasswordPath); err == nil && !srCheckPasswordFile.IsDir() {
if v, err := os.ReadFile(srCheckPasswordPath); err == nil {
srCheckPassword = string(v)
}
}
conf["sr_check_user"] = srCheckUser
conf["sr_check_password"] = srCheckPassword
conf["sr_check_period"] = getEnvOrDefaultInt("PGPOOL_SR_CHECK_PERIOD", 30)
conf["sr_check_database"] = getEnvOrDefault("PGPOOL_SR_CHECK_DATABASE", "postgres")
// Healthcheck per node settings
// https://www.pgpool.net/docs/latest/en/html/runtime-config-health-check.html
conf["health_check_period"] = getEnvOrDefaultInt("PGPOOL_HEALTH_CHECK_PERIOD", 30)
conf["health_check_timeout"] = getEnvOrDefaultInt("PGPOOL_HEALTH_CHECK_TIMEOUT", 10)
conf["health_check_user"] = getEnvOrDefault("PGPOOL_HEALTH_CHECK_USER", srCheckUser)
hCheckPassword := getEnvOrDefault("PGPOOL_HEALTH_CHECK_PASSWORD", srCheckPassword)
hCheckPasswordPath := os.Getenv("PGPOOL_HEALTH_CHECK_PASSWORD_FILE")
if hCheckPasswordFile, err := os.Stat(hCheckPasswordPath); err == nil && !hCheckPasswordFile.IsDir() {
if v, err := os.ReadFile(hCheckPasswordPath); err == nil {
hCheckPassword = string(v)
}
}
conf["health_check_password"] = hCheckPassword
conf["health_check_max_retries"] = getEnvOrDefaultInt("PGPOOL_HEALTH_CHECK_MAX_RETRIES", 5)
conf["health_check_retry_delay"] = getEnvOrDefaultInt("PGPOOL_HEALTH_CHECK_RETRY_DELAY", 5)
conf["connect_timeout"] = getEnvOrDefaultInt("PGPOOL_CONNECT_TIMEOUT", 10000)
// Failover settings
conf["failover_command"] = "echo \">>> Failover - that will initialize new primary node search!\""
conf["failover_on_backend_error"] = "off"
@@ -527,7 +552,7 @@ func configure(state *global, messageSnapshot []pgpoolConfigMessage) {
var flag string
if isPrimary {
flag = "ALWAYS_PRIMARY|DISALLOW_TO_FAILOVER"
flag = "DISALLOW_TO_FAILOVER" //"ALWAYS_PRIMARY|DISALLOW_TO_FAILOVER"
} else {
flag = "DISALLOW_TO_FAILOVER"
}