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