Revert "[民生银行需求]cm两节点部署cm_server.conf参数third_party_gateway_ip支持以逗号分隔"
This reverts commit 052f131ec920101349e007fbe0b92eaade6ac08e.
This commit is contained in:
parent
25c5b03e2f
commit
44cbc5a644
@ -1322,12 +1322,25 @@ status_t IsReachableIP(char *ip)
|
||||
if (ip == nullptr) {
|
||||
return CM_ERROR;
|
||||
}
|
||||
|
||||
char tmpIp[CM_IP_LENGTH];
|
||||
int rc = -1;
|
||||
rc = strcpy_s(tmpIp, CM_IP_LENGTH, ip);
|
||||
securec_check_errno(rc, (void)rc);
|
||||
char *saveptr = NULL;
|
||||
char *token = strtok_r(tmpIp, ",", &saveptr);
|
||||
char cmd[MAXPGPATH] = {0};
|
||||
int rc = snprintf_s(cmd, MAXPGPATH, MAXPGPATH - 1, "timeout 2 ping -c 2 %s > /dev/null 2>&1", ip);
|
||||
securec_check_intval(rc, (void)rc);
|
||||
rc = system(cmd);
|
||||
return rc == 0 ? CM_SUCCESS : CM_ERROR;
|
||||
while (token != NULL) {
|
||||
rc = memset_s(cmd, MAXPGPATH, 0, MAXPGPATH);
|
||||
securec_check_errno(rc, (void)rc);
|
||||
rc = snprintf_s(cmd, MAXPGPATH, MAXPGPATH - 1, "timeout 2 ping -c 2 %s > /dev/null 2>&1", token);
|
||||
securec_check_intval(rc, (void)rc);
|
||||
rc = system(cmd);
|
||||
if (rc == 0) {
|
||||
return CM_SUCCESS;
|
||||
}
|
||||
token = strtok_r(NULL, ",", &saveptr);
|
||||
}
|
||||
return CM_ERROR;
|
||||
}
|
||||
|
||||
bool IsIPAddrValid(const char *ipAddr)
|
||||
|
@ -1047,52 +1047,15 @@ static inline void DdbSetDdbWorkMode(ddb_work_mode workMode, unsigned int voteNu
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
if reachale is true:
|
||||
all ip is reachable, return CM_SUCCESS
|
||||
else return CM_ERROR
|
||||
if reachale is false:
|
||||
all ip is not reachable, return CM_SUCCESS
|
||||
else return CM_ERROR
|
||||
*/
|
||||
static status_t CheckAllIpStatus(char *ip, bool reachable) {
|
||||
if (ip == nullptr) {
|
||||
return CM_ERROR;
|
||||
}
|
||||
|
||||
char tmpIp[CM_IP_LENGTH];
|
||||
int rc = -1;
|
||||
rc = strcpy_s(tmpIp, CM_IP_LENGTH, ip);
|
||||
securec_check_errno(rc, (void)rc);
|
||||
char *saveptr = NULL;
|
||||
char *token = strtok_r(tmpIp, ",", &saveptr);
|
||||
status_t ret = CM_SUCCESS;
|
||||
bool flag = false;
|
||||
while (token != NULL) {
|
||||
if (reachable && IsReachableIP(token) != CM_SUCCESS) {
|
||||
ret = CM_ERROR;
|
||||
break;
|
||||
}
|
||||
else if (!reachable && IsReachableIP(token) == CM_SUCCESS) {
|
||||
ret = CM_ERROR;
|
||||
break;
|
||||
}
|
||||
flag = true;
|
||||
token = strtok_r(NULL, ",", &saveptr);
|
||||
}
|
||||
|
||||
return flag ? ret : CM_ERROR;
|
||||
}
|
||||
|
||||
static void DdbMinorityWorkModeSetInMajority()
|
||||
{
|
||||
uint32 minVoteNum = 1;
|
||||
if (CheckAllIpStatus(g_paramsOn2Nodes.thirdPartyGatewayIp, true) == CM_SUCCESS) {
|
||||
// all third party gateway is reachable, setting a small vote num to make sure current node works as primary.
|
||||
if (IsReachableIP(g_paramsOn2Nodes.thirdPartyGatewayIp) == CM_SUCCESS) {
|
||||
// third party gateway is reachable, setting a small vote num to make sure current node works as primary.
|
||||
write_runlog(LOG, "promote node to primary\n");
|
||||
DdbSetDdbWorkMode(DDB_WORK_MODE_MINORITY, minVoteNum, 0);
|
||||
} else {
|
||||
// not all third party gateway is reachable, setting a big vote num to make sure current node works as standby.
|
||||
// third party gateway is not reachable, setting a big vote num to make sure current node works as standby.
|
||||
minVoteNum += MAX_VOTE_NUM;
|
||||
DdbSetDdbWorkMode(DDB_WORK_MODE_MINORITY, minVoteNum, 1);
|
||||
|
||||
@ -1116,11 +1079,10 @@ static void DdbMinorityWorkModeSetInMajority()
|
||||
static void DdbMinorityWorkModeSetInMinority()
|
||||
{
|
||||
uint32 minVoteNum = 1;
|
||||
if (CheckAllIpStatus(g_paramsOn2Nodes.thirdPartyGatewayIp, true) == CM_SUCCESS && g_bigVoteNumInMinorityMode == 1) {
|
||||
if (IsReachableIP(g_paramsOn2Nodes.thirdPartyGatewayIp) == CM_SUCCESS && g_bigVoteNumInMinorityMode == 1) {
|
||||
write_runlog(LOG, "reset minority work mode and become primary.\n");
|
||||
DdbSetDdbWorkMode(DDB_WORK_MODE_MINORITY, minVoteNum, 0);
|
||||
} else if (CheckAllIpStatus(g_paramsOn2Nodes.thirdPartyGatewayIp, false) == CM_SUCCESS && g_bigVoteNumInMinorityMode == 0) {
|
||||
// every third party gateway is not reachable, setting a big vote num to make sure current node works as standby.
|
||||
} else if (IsReachableIP(g_paramsOn2Nodes.thirdPartyGatewayIp) != CM_SUCCESS && g_bigVoteNumInMinorityMode == 0) {
|
||||
minVoteNum += MAX_VOTE_NUM;
|
||||
write_runlog(LOG, "reset minority work mode and become standby.\n");
|
||||
DdbSetDdbWorkMode(DDB_WORK_MODE_MINORITY, minVoteNum, 1);
|
||||
@ -1137,7 +1099,7 @@ static void DdbMinorityWorkModeSetInMinority()
|
||||
static void DdbMinorityWorkModeSetInStartup()
|
||||
{
|
||||
uint32 minVoteNum = 1;
|
||||
if (CheckAllIpStatus(g_paramsOn2Nodes.thirdPartyGatewayIp, true) == CM_SUCCESS) {
|
||||
if (IsReachableIP(g_paramsOn2Nodes.thirdPartyGatewayIp) == CM_SUCCESS) {
|
||||
write_runlog(LOG, "start up with minority work mode and minVoteNum: %d.\n", minVoteNum);
|
||||
DdbSetDdbWorkMode(DDB_WORK_MODE_MINORITY, minVoteNum, 0);
|
||||
} else {
|
||||
|
Loading…
x
Reference in New Issue
Block a user