diff --git a/src/bin/pg_ctl/pg_ctl.cpp b/src/bin/pg_ctl/pg_ctl.cpp index f2c78cdfb..302999924 100755 --- a/src/bin/pg_ctl/pg_ctl.cpp +++ b/src/bin/pg_ctl/pg_ctl.cpp @@ -2174,7 +2174,7 @@ static void do_failover(uint32 term) } origin_run_mode = run_mode = get_runmode(); - if (ss_instance_config.dss.enable_dorado) { + if (ss_instance_config.dss.enable_dorado || ss_instance_config.dss.enable_stream) { if (run_mode == PRIMARY_MODE) { pg_log(PG_WARNING, _(" failover completed; " @@ -2183,9 +2183,14 @@ static void do_failover(uint32 term) } else if (run_mode != MAIN_STANDBY_MODE) { pg_log(PG_WARNING, _(" cannot failover server; " - "server is not main standby node in ss dorado cluster\n")); + "server is not main standby node in ss double cluster\n")); exit(1); } + } else if (ss_instance_config.dss.enable_dss) { + pg_log(PG_WARNING, + _(" cannot failover server; " + "server is share storage single cluster mode\n")); + exit(1); } else { if (run_mode == PRIMARY_MODE) { pg_log(PG_WARNING, _(" failover completed (%s)\n"), pg_data); @@ -2266,10 +2271,11 @@ static void do_failover(uint32 term) break; } + pg_log(PG_PRINT, "\n"); if ((origin_run_mode == STANDBY_MODE && get_runmode() != PRIMARY_MODE) || (origin_run_mode == MAIN_STANDBY_MODE && get_runmode() != PRIMARY_MODE) || (origin_run_mode == CASCADE_STANDBY_MODE && get_runmode() != STANDBY_MODE)) { - pg_log(PG_WARNING, _(" \nfailover timeout after %d seconds. please manually check the cluster status or backtrack log.\n"), wait_seconds); + pg_log(PG_WARNING, _(" failover timeout after %d seconds. please manually check the cluster status or backtrack log.\n"), wait_seconds); pg_log(PG_WARNING, _(" failover failed (%s)\n"), pg_data); exit(1); } diff --git a/src/common/port/tool_common.cpp b/src/common/port/tool_common.cpp index c1c9d2264..84dc0bfbb 100644 --- a/src/common/port/tool_common.cpp +++ b/src/common/port/tool_common.cpp @@ -32,6 +32,7 @@ SSInstanceConfig ss_instance_config = { .dss = { .enable_dss = false, .enable_dorado = false, + .enable_stream = false, .instance_id = 0, .primaryInstId = -1, .interNodeNum = 0, @@ -476,6 +477,7 @@ bool ss_read_config(const char* pg_data) char config_file[MAXPGPATH] = {0}; char enable_dss[MAXPGPATH] = {0}; char enable_dorado[MAXPGPATH] = {0}; + char enable_stream[MAXPGPATH] = {0}; char inst_id[MAXPGPATH] = {0}; char interconnect_url[MAXPGPATH] = {0}; char** optlines = NULL; @@ -496,10 +498,15 @@ bool ss_read_config(const char* pg_data) } (void)find_guc_optval((const char**)optlines, "ss_enable_dorado", enable_dorado); - if(strcmp(enable_dorado, "on") == 0) { + if (strcmp(enable_dorado, "on") == 0) { ss_instance_config.dss.enable_dorado = true; } + (void)find_guc_optval((const char**)optlines, "ss_stream_cluster", enable_stream); + if (strcmp(enable_stream, "on") == 0) { + ss_instance_config.dss.enable_stream = true; + } + ss_instance_config.dss.enable_dss = true; ss_instance_config.dss.socketpath = (char*)malloc(sizeof(char) * MAXPGPATH); ss_instance_config.dss.vgname = (char*)malloc(sizeof(char) * MAXPGPATH); diff --git a/src/include/tool_common.h b/src/include/tool_common.h index 4e758a839..5a2354cd4 100644 --- a/src/include/tool_common.h +++ b/src/include/tool_common.h @@ -122,6 +122,7 @@ typedef struct st_datadir_t { typedef struct DssOptions { bool enable_dss; bool enable_dorado; + bool enable_stream; int instance_id; int primaryInstId; int interNodeNum;