Merge pull request #29730 from taosdata/feat/3.0/TS-5584
Feat(sync):Add restore progress to the "show vnodes" command, and add…
This commit is contained in:
commit
d13f9448eb
|
@ -1777,6 +1777,8 @@ typedef struct {
|
||||||
int64_t numOfBatchInsertSuccessReqs;
|
int64_t numOfBatchInsertSuccessReqs;
|
||||||
int32_t numOfCachedTables;
|
int32_t numOfCachedTables;
|
||||||
int32_t learnerProgress; // use one reservered
|
int32_t learnerProgress; // use one reservered
|
||||||
|
int64_t syncAppliedIndex;
|
||||||
|
int64_t syncCommitIndex;
|
||||||
} SVnodeLoad;
|
} SVnodeLoad;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
|
@ -293,6 +293,7 @@ int32_t syncBecomeAssignedLeader(SSyncNode* ths, SRpcMsg* pRpcMsg);
|
||||||
int32_t syncUpdateArbTerm(int64_t rid, SyncTerm arbTerm);
|
int32_t syncUpdateArbTerm(int64_t rid, SyncTerm arbTerm);
|
||||||
|
|
||||||
SSyncState syncGetState(int64_t rid);
|
SSyncState syncGetState(int64_t rid);
|
||||||
|
void syncGetCommitIndex(int64_t rid, int64_t* syncCommitIndex);
|
||||||
int32_t syncGetArbToken(int64_t rid, char* outToken);
|
int32_t syncGetArbToken(int64_t rid, char* outToken);
|
||||||
int32_t syncCheckSynced(int64_t rid);
|
int32_t syncCheckSynced(int64_t rid);
|
||||||
void syncGetRetryEpSet(int64_t rid, SEpSet* pEpSet);
|
void syncGetRetryEpSet(int64_t rid, SEpSet* pEpSet);
|
||||||
|
|
|
@ -357,6 +357,8 @@ typedef enum ELogicConditionType {
|
||||||
|
|
||||||
#define TSDB_MAX_REPLICA 5
|
#define TSDB_MAX_REPLICA 5
|
||||||
#define TSDB_MAX_LEARNER_REPLICA 10
|
#define TSDB_MAX_LEARNER_REPLICA 10
|
||||||
|
#define TSDB_SYNC_RESTORE_lEN 20
|
||||||
|
#define TSDB_SYNC_APPLY_COMMIT_LEN 41
|
||||||
#define TSDB_SYNC_LOG_BUFFER_SIZE 4096
|
#define TSDB_SYNC_LOG_BUFFER_SIZE 4096
|
||||||
#define TSDB_SYNC_LOG_BUFFER_RETENTION 256
|
#define TSDB_SYNC_LOG_BUFFER_RETENTION 256
|
||||||
#define TSDB_SYNC_LOG_BUFFER_THRESHOLD (1024 * 1024 * 5)
|
#define TSDB_SYNC_LOG_BUFFER_THRESHOLD (1024 * 1024 * 5)
|
||||||
|
|
|
@ -14,8 +14,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define _DEFAULT_SOURCE
|
#define _DEFAULT_SOURCE
|
||||||
#include "tmsg.h"
|
|
||||||
#include "tglobal.h"
|
#include "tglobal.h"
|
||||||
|
#include "tmsg.h"
|
||||||
|
|
||||||
#undef TD_MSG_NUMBER_
|
#undef TD_MSG_NUMBER_
|
||||||
#undef TD_MSG_DICT_
|
#undef TD_MSG_DICT_
|
||||||
|
@ -1471,6 +1471,12 @@ int32_t tSerializeSStatusReq(void *buf, int32_t bufLen, SStatusReq *pReq) {
|
||||||
TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->analVer));
|
TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->analVer));
|
||||||
TAOS_CHECK_EXIT(tSerializeSMonitorParas(&encoder, &pReq->clusterCfg.monitorParas));
|
TAOS_CHECK_EXIT(tSerializeSMonitorParas(&encoder, &pReq->clusterCfg.monitorParas));
|
||||||
|
|
||||||
|
for (int32_t i = 0; i < vlen; ++i) {
|
||||||
|
SVnodeLoad *pload = taosArrayGet(pReq->pVloads, i);
|
||||||
|
TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->syncAppliedIndex));
|
||||||
|
TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->syncCommitIndex));
|
||||||
|
}
|
||||||
|
|
||||||
tEndEncode(&encoder);
|
tEndEncode(&encoder);
|
||||||
|
|
||||||
_exit:
|
_exit:
|
||||||
|
@ -1600,6 +1606,14 @@ int32_t tDeserializeSStatusReq(void *buf, int32_t bufLen, SStatusReq *pReq) {
|
||||||
TAOS_CHECK_EXIT(tDeserializeSMonitorParas(&decoder, &pReq->clusterCfg.monitorParas));
|
TAOS_CHECK_EXIT(tDeserializeSMonitorParas(&decoder, &pReq->clusterCfg.monitorParas));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!tDecodeIsEnd(&decoder)) {
|
||||||
|
for (int32_t i = 0; i < vlen; ++i) {
|
||||||
|
SVnodeLoad *pLoad = taosArrayGet(pReq->pVloads, i);
|
||||||
|
TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pLoad->syncAppliedIndex));
|
||||||
|
TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pLoad->syncCommitIndex));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
tEndDecode(&decoder);
|
tEndDecode(&decoder);
|
||||||
|
|
||||||
_exit:
|
_exit:
|
||||||
|
|
|
@ -293,12 +293,16 @@ static const SSysDbTableSchema vgroupsSchema[] = {
|
||||||
{.name = "tables", .bytes = 4, .type = TSDB_DATA_TYPE_INT, .sysInfo = true},
|
{.name = "tables", .bytes = 4, .type = TSDB_DATA_TYPE_INT, .sysInfo = true},
|
||||||
{.name = "v1_dnode", .bytes = 2, .type = TSDB_DATA_TYPE_SMALLINT, .sysInfo = true},
|
{.name = "v1_dnode", .bytes = 2, .type = TSDB_DATA_TYPE_SMALLINT, .sysInfo = true},
|
||||||
{.name = "v1_status", .bytes = 9 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true},
|
{.name = "v1_status", .bytes = 9 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true},
|
||||||
|
{.name = "v1_applied/committed", .bytes = TSDB_SYNC_APPLY_COMMIT_LEN + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true},
|
||||||
{.name = "v2_dnode", .bytes = 2, .type = TSDB_DATA_TYPE_SMALLINT, .sysInfo = true},
|
{.name = "v2_dnode", .bytes = 2, .type = TSDB_DATA_TYPE_SMALLINT, .sysInfo = true},
|
||||||
{.name = "v2_status", .bytes = 9 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true},
|
{.name = "v2_status", .bytes = 9 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true},
|
||||||
|
{.name = "v2_applied/committed", .bytes = TSDB_SYNC_APPLY_COMMIT_LEN + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true},
|
||||||
{.name = "v3_dnode", .bytes = 2, .type = TSDB_DATA_TYPE_SMALLINT, .sysInfo = true},
|
{.name = "v3_dnode", .bytes = 2, .type = TSDB_DATA_TYPE_SMALLINT, .sysInfo = true},
|
||||||
{.name = "v3_status", .bytes = 9 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true},
|
{.name = "v3_status", .bytes = 9 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true},
|
||||||
|
{.name = "v3_applied/committed", .bytes = TSDB_SYNC_APPLY_COMMIT_LEN + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true},
|
||||||
{.name = "v4_dnode", .bytes = 2, .type = TSDB_DATA_TYPE_SMALLINT, .sysInfo = true},
|
{.name = "v4_dnode", .bytes = 2, .type = TSDB_DATA_TYPE_SMALLINT, .sysInfo = true},
|
||||||
{.name = "v4_status", .bytes = 9 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true},
|
{.name = "v4_status", .bytes = 9 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true},
|
||||||
|
{.name = "v4_applied/committed", .bytes = TSDB_SYNC_APPLY_COMMIT_LEN + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true},
|
||||||
{.name = "cacheload", .bytes = 4, .type = TSDB_DATA_TYPE_INT, .sysInfo = true},
|
{.name = "cacheload", .bytes = 4, .type = TSDB_DATA_TYPE_INT, .sysInfo = true},
|
||||||
{.name = "cacheelements", .bytes = 4, .type = TSDB_DATA_TYPE_INT, .sysInfo = true},
|
{.name = "cacheelements", .bytes = 4, .type = TSDB_DATA_TYPE_INT, .sysInfo = true},
|
||||||
{.name = "tsma", .bytes = 1, .type = TSDB_DATA_TYPE_TINYINT, .sysInfo = true},
|
{.name = "tsma", .bytes = 1, .type = TSDB_DATA_TYPE_TINYINT, .sysInfo = true},
|
||||||
|
@ -369,6 +373,8 @@ static const SSysDbTableSchema vnodesSchema[] = {
|
||||||
{.name = "role_time", .bytes = 8, .type = TSDB_DATA_TYPE_TIMESTAMP, .sysInfo = true},
|
{.name = "role_time", .bytes = 8, .type = TSDB_DATA_TYPE_TIMESTAMP, .sysInfo = true},
|
||||||
{.name = "start_time", .bytes = 8, .type = TSDB_DATA_TYPE_TIMESTAMP, .sysInfo = true},
|
{.name = "start_time", .bytes = 8, .type = TSDB_DATA_TYPE_TIMESTAMP, .sysInfo = true},
|
||||||
{.name = "restored", .bytes = 1, .type = TSDB_DATA_TYPE_BOOL, .sysInfo = true},
|
{.name = "restored", .bytes = 1, .type = TSDB_DATA_TYPE_BOOL, .sysInfo = true},
|
||||||
|
{.name = "apply_finish_time", .bytes = TSDB_SYNC_RESTORE_lEN, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true},
|
||||||
|
{.name = "unapplied", .bytes = 4, .type = TSDB_DATA_TYPE_INT, .sysInfo = true},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const SSysDbTableSchema userUserPrivilegesSchema[] = {
|
static const SSysDbTableSchema userUserPrivilegesSchema[] = {
|
||||||
|
|
|
@ -136,7 +136,7 @@ typedef enum {
|
||||||
typedef enum {
|
typedef enum {
|
||||||
TRN_KILL_MODE_SKIP = 0,
|
TRN_KILL_MODE_SKIP = 0,
|
||||||
TRN_KILL_MODE_INTERUPT = 1,
|
TRN_KILL_MODE_INTERUPT = 1,
|
||||||
//TRN_KILL_MODE_ROLLBACK = 2,
|
// TRN_KILL_MODE_ROLLBACK = 2,
|
||||||
} ETrnKillMode;
|
} ETrnKillMode;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
@ -478,6 +478,10 @@ typedef struct {
|
||||||
int32_t dnodeId;
|
int32_t dnodeId;
|
||||||
ESyncState syncState;
|
ESyncState syncState;
|
||||||
int64_t syncTerm;
|
int64_t syncTerm;
|
||||||
|
int64_t syncAppliedIndex;
|
||||||
|
int64_t lastSyncAppliedIndexUpdateTime;
|
||||||
|
double appliedRate;
|
||||||
|
int64_t syncCommitIndex;
|
||||||
bool syncRestore;
|
bool syncRestore;
|
||||||
bool syncCanRead;
|
bool syncCanRead;
|
||||||
int64_t roleTimeMs;
|
int64_t roleTimeMs;
|
||||||
|
|
|
@ -535,11 +535,37 @@ static int32_t mndCheckClusterCfgPara(SMnode *pMnode, SDnodeObj *pDnode, const S
|
||||||
return DND_REASON_ONLINE;
|
return DND_REASON_ONLINE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double calcAppliedRate(int64_t currentCount, int64_t lastCount, int64_t currentTimeMs, int64_t lastTimeMs) {
|
||||||
|
if ((currentTimeMs <= lastTimeMs) || (currentCount <= lastCount)) {
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int64_t deltaCount = currentCount - lastCount;
|
||||||
|
int64_t deltaMs = currentTimeMs - lastTimeMs;
|
||||||
|
double rate = (double)deltaCount / (double)deltaMs;
|
||||||
|
return rate;
|
||||||
|
}
|
||||||
|
|
||||||
static bool mndUpdateVnodeState(int32_t vgId, SVnodeGid *pGid, SVnodeLoad *pVload) {
|
static bool mndUpdateVnodeState(int32_t vgId, SVnodeGid *pGid, SVnodeLoad *pVload) {
|
||||||
bool stateChanged = false;
|
bool stateChanged = false;
|
||||||
bool roleChanged = pGid->syncState != pVload->syncState ||
|
bool roleChanged = pGid->syncState != pVload->syncState ||
|
||||||
(pVload->syncTerm != -1 && pGid->syncTerm != pVload->syncTerm) ||
|
(pVload->syncTerm != -1 && pGid->syncTerm != pVload->syncTerm) ||
|
||||||
pGid->roleTimeMs != pVload->roleTimeMs;
|
pGid->roleTimeMs != pVload->roleTimeMs;
|
||||||
|
|
||||||
|
if (pVload->syncCommitIndex > pVload->syncAppliedIndex) {
|
||||||
|
if (pGid->lastSyncAppliedIndexUpdateTime == 0) {
|
||||||
|
pGid->lastSyncAppliedIndexUpdateTime = taosGetTimestampMs();
|
||||||
|
} else if (pGid->syncAppliedIndex != pVload->syncAppliedIndex) {
|
||||||
|
int64_t currentTimeMs = taosGetTimestampMs();
|
||||||
|
pGid->appliedRate = calcAppliedRate(pVload->syncAppliedIndex, pGid->syncAppliedIndex, currentTimeMs,
|
||||||
|
pGid->lastSyncAppliedIndexUpdateTime);
|
||||||
|
|
||||||
|
pGid->lastSyncAppliedIndexUpdateTime = currentTimeMs;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pGid->syncAppliedIndex = pVload->syncAppliedIndex;
|
||||||
|
pGid->syncCommitIndex = pVload->syncCommitIndex;
|
||||||
if (roleChanged || pGid->syncRestore != pVload->syncRestore || pGid->syncCanRead != pVload->syncCanRead ||
|
if (roleChanged || pGid->syncRestore != pVload->syncRestore || pGid->syncCanRead != pVload->syncCanRead ||
|
||||||
pGid->startTimeMs != pVload->startTimeMs) {
|
pGid->startTimeMs != pVload->startTimeMs) {
|
||||||
mInfo(
|
mInfo(
|
||||||
|
|
|
@ -244,6 +244,8 @@ static int32_t mndVgroupActionUpdate(SSdb *pSdb, SVgObj *pOld, SVgObj *pNew) {
|
||||||
pNewGid->syncState = pOldGid->syncState;
|
pNewGid->syncState = pOldGid->syncState;
|
||||||
pNewGid->syncRestore = pOldGid->syncRestore;
|
pNewGid->syncRestore = pOldGid->syncRestore;
|
||||||
pNewGid->syncCanRead = pOldGid->syncCanRead;
|
pNewGid->syncCanRead = pOldGid->syncCanRead;
|
||||||
|
pNewGid->syncAppliedIndex = pOldGid->syncAppliedIndex;
|
||||||
|
pNewGid->syncCommitIndex = pOldGid->syncCommitIndex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1122,10 +1124,25 @@ static int32_t mndRetrieveVgroups(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *p
|
||||||
mError("vgId:%d, failed to set role, since %s", pVgroup->vgId, tstrerror(code));
|
mError("vgId:%d, failed to set role, since %s", pVgroup->vgId, tstrerror(code));
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char applyStr[TSDB_SYNC_APPLY_COMMIT_LEN + 1] = {0};
|
||||||
|
char buf[TSDB_SYNC_APPLY_COMMIT_LEN + VARSTR_HEADER_SIZE + 1] = {0};
|
||||||
|
snprintf(applyStr, sizeof(applyStr), "%" PRId64 "/%" PRId64, pVgroup->vnodeGid[i].syncAppliedIndex,
|
||||||
|
pVgroup->vnodeGid[i].syncCommitIndex);
|
||||||
|
STR_WITH_MAXSIZE_TO_VARSTR(buf, applyStr, pShow->pMeta->pSchemas[cols].bytes);
|
||||||
|
|
||||||
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
|
code = colDataSetVal(pColInfo, numOfRows, (const char *)&buf, false);
|
||||||
|
if (code != 0) {
|
||||||
|
mError("vgId:%d, failed to set role, since %s", pVgroup->vgId, tstrerror(code));
|
||||||
|
return code;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
colDataSetNULL(pColInfo, numOfRows);
|
colDataSetNULL(pColInfo, numOfRows);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataSetNULL(pColInfo, numOfRows);
|
colDataSetNULL(pColInfo, numOfRows);
|
||||||
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
|
colDataSetNULL(pColInfo, numOfRows);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1232,6 +1249,21 @@ int64_t mndGetVnodesMemory(SMnode *pMnode, int32_t dnodeId) {
|
||||||
return vnodeMemory;
|
return vnodeMemory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void calculateRstoreFinishTime(double rate, int64_t applyCount, char *restoreStr, size_t restoreStrSize) {
|
||||||
|
if (rate == 0) {
|
||||||
|
snprintf(restoreStr, restoreStrSize, "0:0:0");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int64_t costTime = applyCount / rate;
|
||||||
|
int64_t totalSeconds = costTime / 1000;
|
||||||
|
int64_t hours = totalSeconds / 3600;
|
||||||
|
totalSeconds %= 3600;
|
||||||
|
int64_t minutes = totalSeconds / 60;
|
||||||
|
int64_t seconds = totalSeconds % 60;
|
||||||
|
snprintf(restoreStr, restoreStrSize, "%" PRId64 ":%" PRId64 ":%" PRId64, hours, minutes, seconds);
|
||||||
|
}
|
||||||
|
|
||||||
static int32_t mndRetrieveVnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, int32_t rows) {
|
static int32_t mndRetrieveVnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, int32_t rows) {
|
||||||
SMnode *pMnode = pReq->info.node;
|
SMnode *pMnode = pReq->info.node;
|
||||||
SSdb *pSdb = pMnode->pSdb;
|
SSdb *pSdb = pMnode->pSdb;
|
||||||
|
@ -1319,6 +1351,26 @@ static int32_t mndRetrieveVnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int64_t unappliedCount = pGid->syncCommitIndex - pGid->syncAppliedIndex;
|
||||||
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
|
char restoreStr[20] = {0};
|
||||||
|
if (unappliedCount > 0) {
|
||||||
|
calculateRstoreFinishTime(pGid->appliedRate, unappliedCount, restoreStr, sizeof(restoreStr));
|
||||||
|
}
|
||||||
|
STR_TO_VARSTR(buf, restoreStr);
|
||||||
|
code = colDataSetVal(pColInfo, numOfRows, (const char *)&buf, false);
|
||||||
|
if (code != 0) {
|
||||||
|
mError("vgId:%d, failed to set syncRestore finish time, since %s", pVgroup->vgId, tstrerror(code));
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
|
code = colDataSetVal(pColInfo, numOfRows, (const char *)&unappliedCount, false);
|
||||||
|
if (code != 0) {
|
||||||
|
mError("vgId:%d, failed to set syncRestore, since %s", pVgroup->vgId, tstrerror(code));
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
sdbRelease(pSdb, pDnode);
|
sdbRelease(pSdb, pDnode);
|
||||||
}
|
}
|
||||||
|
@ -2771,7 +2823,7 @@ int32_t mndBuildAlterVgroupAction(SMnode *pMnode, STrans *pTrans, SDbObj *pOldDb
|
||||||
pVgroup->vnodeGid[0].dnodeId);
|
pVgroup->vnodeGid[0].dnodeId);
|
||||||
|
|
||||||
// add second
|
// add second
|
||||||
if (pNewVgroup->replica == 1){
|
if (pNewVgroup->replica == 1) {
|
||||||
TAOS_CHECK_RETURN(mndAddVnodeToVgroup(pMnode, pTrans, pNewVgroup, pArray));
|
TAOS_CHECK_RETURN(mndAddVnodeToVgroup(pMnode, pTrans, pNewVgroup, pArray));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2792,8 +2844,8 @@ int32_t mndBuildAlterVgroupAction(SMnode *pMnode, STrans *pTrans, SDbObj *pOldDb
|
||||||
TAOS_CHECK_RETURN(mndAddAlterVnodeConfirmAction(pMnode, pTrans, pNewDb, pNewVgroup));
|
TAOS_CHECK_RETURN(mndAddAlterVnodeConfirmAction(pMnode, pTrans, pNewDb, pNewVgroup));
|
||||||
|
|
||||||
// add third
|
// add third
|
||||||
if (pNewVgroup->replica == 2){
|
if (pNewVgroup->replica == 2) {
|
||||||
TAOS_CHECK_RETURN (mndAddVnodeToVgroup(pMnode, pTrans, pNewVgroup, pArray));
|
TAOS_CHECK_RETURN(mndAddVnodeToVgroup(pMnode, pTrans, pNewVgroup, pArray));
|
||||||
}
|
}
|
||||||
|
|
||||||
pNewVgroup->vnodeGid[0].nodeRole = TAOS_SYNC_ROLE_VOTER;
|
pNewVgroup->vnodeGid[0].nodeRole = TAOS_SYNC_ROLE_VOTER;
|
||||||
|
|
|
@ -530,6 +530,8 @@ _exit:
|
||||||
|
|
||||||
int32_t vnodeGetLoad(SVnode *pVnode, SVnodeLoad *pLoad) {
|
int32_t vnodeGetLoad(SVnode *pVnode, SVnodeLoad *pLoad) {
|
||||||
SSyncState state = syncGetState(pVnode->sync);
|
SSyncState state = syncGetState(pVnode->sync);
|
||||||
|
pLoad->syncAppliedIndex = pVnode->state.applied;
|
||||||
|
syncGetCommitIndex(pVnode->sync, &pLoad->syncCommitIndex);
|
||||||
|
|
||||||
pLoad->vgId = TD_VID(pVnode);
|
pLoad->vgId = TD_VID(pVnode);
|
||||||
pLoad->syncState = state.state;
|
pLoad->syncState = state.state;
|
||||||
|
|
|
@ -679,6 +679,14 @@ SSyncState syncGetState(int64_t rid) {
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void syncGetCommitIndex(int64_t rid, int64_t* syncCommitIndex) {
|
||||||
|
SSyncNode* pSyncNode = syncNodeAcquire(rid);
|
||||||
|
if (pSyncNode != NULL) {
|
||||||
|
*syncCommitIndex = pSyncNode->commitIndex;
|
||||||
|
syncNodeRelease(pSyncNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int32_t syncGetArbToken(int64_t rid, char* outToken) {
|
int32_t syncGetArbToken(int64_t rid, char* outToken) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
SSyncNode* pSyncNode = syncNodeAcquire(rid);
|
SSyncNode* pSyncNode = syncNodeAcquire(rid);
|
||||||
|
|
|
@ -61,11 +61,11 @@ class TDTestCase(TBase):
|
||||||
|
|
||||||
tdSql.query("show db.vgroups;")
|
tdSql.query("show db.vgroups;")
|
||||||
|
|
||||||
if(tdSql.getData(0, 4) == "follower") and (tdSql.getData(0, 6) == "leader"):
|
if(tdSql.getData(0, 4) == "follower") and (tdSql.getData(0, 7) == "leader"):
|
||||||
tdLog.info("stop dnode2")
|
tdLog.info("stop dnode2")
|
||||||
sc.dnodeStop(2)
|
sc.dnodeStop(2)
|
||||||
|
|
||||||
if(tdSql.getData(0, 6) == "follower") and (tdSql.getData(0, 4) == "leader"):
|
if(tdSql.getData(0, 7) == "follower") and (tdSql.getData(0, 4) == "leader"):
|
||||||
tdLog.info("stop dnode 3")
|
tdLog.info("stop dnode 3")
|
||||||
sc.dnodeStop(3)
|
sc.dnodeStop(3)
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ class TDTestCase(TBase):
|
||||||
while count < 100:
|
while count < 100:
|
||||||
tdSql.query("show db.vgroups;")
|
tdSql.query("show db.vgroups;")
|
||||||
|
|
||||||
if(tdSql.getData(0, 4) == "assigned ") or (tdSql.getData(0, 6) == "assigned "):
|
if(tdSql.getData(0, 4) == "assigned ") or (tdSql.getData(0, 7) == "assigned "):
|
||||||
break
|
break
|
||||||
|
|
||||||
tdLog.info("wait %d seconds for set assigned"%count)
|
tdLog.info("wait %d seconds for set assigned"%count)
|
||||||
|
|
|
@ -291,9 +291,9 @@ class ClusterComCheck:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
elif self.db_replica == 3 :
|
elif self.db_replica == 3 :
|
||||||
vgroup_status_first=[tdSql.res[0][4],tdSql.res[0][6],tdSql.res[0][8]]
|
vgroup_status_first=[tdSql.res[0][4],tdSql.res[0][7],tdSql.res[0][10]]
|
||||||
|
|
||||||
vgroup_status_last=[tdSql.res[last_number][4],tdSql.res[last_number][6],tdSql.res[last_number][8]]
|
vgroup_status_last=[tdSql.res[last_number][4],tdSql.res[last_number][7],tdSql.res[last_number][10]]
|
||||||
if vgroup_status_first.count('leader') == 1 and vgroup_status_first.count('follower') == 2:
|
if vgroup_status_first.count('leader') == 1 and vgroup_status_first.count('follower') == 2:
|
||||||
if vgroup_status_last.count('leader') == 1 and vgroup_status_last.count('follower') == 2:
|
if vgroup_status_last.count('leader') == 1 and vgroup_status_last.count('follower') == 2:
|
||||||
tdSql.query(f"select `replica` from information_schema.ins_databases where `name`='{db_name}';")
|
tdSql.query(f"select `replica` from information_schema.ins_databases where `name`='{db_name}';")
|
||||||
|
@ -301,6 +301,18 @@ class ClusterComCheck:
|
||||||
if tdSql.res[0][0] == db_replica:
|
if tdSql.res[0][0] == db_replica:
|
||||||
tdLog.success(f"elections of {db_name}.vgroups with replica {self.db_replica} are ready in {count} s")
|
tdLog.success(f"elections of {db_name}.vgroups with replica {self.db_replica} are ready in {count} s")
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
vgruop_apply_commit_first = [tdSql.res[0][5],tdSql.res[0][8],tdSql.res[0][11]]
|
||||||
|
vgruop_apply_commit_end = [tdSql.res[last_number][5],tdSql.res[last_number][8],tdSql.res[last_number][11]]
|
||||||
|
for i in range(3):
|
||||||
|
v = vgruop_apply_commit_first[i].split('/')
|
||||||
|
assert (int(v[0]) <= int(v[1])) ,f"apply {v[0]} > commit {v[1]}"
|
||||||
|
|
||||||
|
v = vgruop_apply_commit_end[i].split('/')
|
||||||
|
assert (int(v[0]) <= int(v[1])) ,f"apply {v[0]} > commit {v[1]}"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
tdLog.debug(tdSql.res)
|
tdLog.debug(tdSql.res)
|
||||||
tdLog.notice(f"elections of {db_name} all vgroups with replica {self.db_replica} are failed in {count} s ")
|
tdLog.notice(f"elections of {db_name} all vgroups with replica {self.db_replica} are failed in {count} s ")
|
||||||
|
|
|
@ -70,10 +70,10 @@ endi
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -98,10 +98,10 @@ endi
|
||||||
if $data(3)[4] == leader then
|
if $data(3)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(3)[6] == leader then
|
if $data(3)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(3)[8] == leader then
|
if $data(3)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
|
|
@ -75,10 +75,10 @@ endi
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -105,10 +105,10 @@ endi
|
||||||
if $data(3)[4] == leader then
|
if $data(3)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(3)[6] == leader then
|
if $data(3)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(3)[8] == leader then
|
if $data(3)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -135,10 +135,10 @@ endi
|
||||||
if $data(4)[4] == leader then
|
if $data(4)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(4)[6] == leader then
|
if $data(4)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(4)[8] == leader then
|
if $data(4)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -165,10 +165,10 @@ endi
|
||||||
if $data(4)[4] == leader then
|
if $data(4)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(4)[6] == leader then
|
if $data(4)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(4)[8] == leader then
|
if $data(4)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -247,10 +247,10 @@ endi
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -307,10 +307,10 @@ endi
|
||||||
if $data(4)[4] == leader then
|
if $data(4)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(4)[6] == leader then
|
if $data(4)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(4)[8] == leader then
|
if $data(4)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -337,10 +337,10 @@ endi
|
||||||
if $data(4)[4] == leader then
|
if $data(4)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(4)[6] == leader then
|
if $data(4)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(4)[8] == leader then
|
if $data(4)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
|
|
@ -70,10 +70,10 @@ endi
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -100,10 +100,10 @@ endi
|
||||||
if $data(3)[4] == leader then
|
if $data(3)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(3)[6] == leader then
|
if $data(3)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(3)[8] == leader then
|
if $data(3)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -130,10 +130,10 @@ endi
|
||||||
if $data(4)[4] == leader then
|
if $data(4)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(4)[6] == leader then
|
if $data(4)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(4)[8] == leader then
|
if $data(4)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -160,10 +160,10 @@ endi
|
||||||
if $data(4)[4] == leader then
|
if $data(4)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(4)[6] == leader then
|
if $data(4)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(4)[8] == leader then
|
if $data(4)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -256,10 +256,10 @@ endi
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -286,10 +286,10 @@ endi
|
||||||
if $data(3)[4] == leader then
|
if $data(3)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(3)[6] == leader then
|
if $data(3)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(3)[8] == leader then
|
if $data(3)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -316,10 +316,10 @@ endi
|
||||||
if $data(4)[4] == leader then
|
if $data(4)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(4)[6] == leader then
|
if $data(4)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(4)[8] == leader then
|
if $data(4)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -346,10 +346,10 @@ endi
|
||||||
if $data(4)[4] == leader then
|
if $data(4)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(4)[6] == leader then
|
if $data(4)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(4)[8] == leader then
|
if $data(4)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
|
|
@ -73,13 +73,13 @@ if $data(2)[4] == leader then
|
||||||
$follower1 = 3
|
$follower1 = 3
|
||||||
$follower2 = 4
|
$follower2 = 4
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
$leaderVnode = 3
|
$leaderVnode = 3
|
||||||
$follower1 = 2
|
$follower1 = 2
|
||||||
$follower2 = 4
|
$follower2 = 4
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
$leaderVnode = 4
|
$leaderVnode = 4
|
||||||
$follower1 = 2
|
$follower1 = 2
|
||||||
|
@ -109,10 +109,10 @@ endi
|
||||||
if $data(2)[3] != 2 then
|
if $data(2)[3] != 2 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
if $data(2)[5] != 3 then
|
if $data(2)[6] != 3 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
if $data(2)[7] != 4 then
|
if $data(2)[9] != 4 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
|
|
||||||
|
@ -199,10 +199,10 @@ endi
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
|
|
@ -137,13 +137,13 @@ if $data(2)[4] == leader then
|
||||||
$follower1 = 3
|
$follower1 = 3
|
||||||
$follower2 = 4
|
$follower2 = 4
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
$leaderVnode = 3
|
$leaderVnode = 3
|
||||||
$follower1 = 2
|
$follower1 = 2
|
||||||
$follower2 = 4
|
$follower2 = 4
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
$leaderVnode = 4
|
$leaderVnode = 4
|
||||||
$follower1 = 2
|
$follower1 = 2
|
||||||
|
|
|
@ -116,13 +116,13 @@ if $data(2)[4] == leader then
|
||||||
$follower1 = 3
|
$follower1 = 3
|
||||||
$follower2 = 4
|
$follower2 = 4
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
$leaderVnode = 3
|
$leaderVnode = 3
|
||||||
$follower1 = 2
|
$follower1 = 2
|
||||||
$follower2 = 4
|
$follower2 = 4
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
$leaderVnode = 4
|
$leaderVnode = 4
|
||||||
$follower1 = 2
|
$follower1 = 2
|
||||||
|
|
|
@ -122,13 +122,13 @@ if $data(2)[4] == leader then
|
||||||
$follower1 = 3
|
$follower1 = 3
|
||||||
$follower2 = 4
|
$follower2 = 4
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
$leaderVnode = 3
|
$leaderVnode = 3
|
||||||
$follower1 = 2
|
$follower1 = 2
|
||||||
$follower2 = 4
|
$follower2 = 4
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
$leaderVnode = 4
|
$leaderVnode = 4
|
||||||
$follower1 = 2
|
$follower1 = 2
|
||||||
|
|
|
@ -136,13 +136,13 @@ if $data(2)[4] == leader then
|
||||||
$follower1 = 3
|
$follower1 = 3
|
||||||
$follower2 = 4
|
$follower2 = 4
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
$leaderVnode = 3
|
$leaderVnode = 3
|
||||||
$follower1 = 2
|
$follower1 = 2
|
||||||
$follower2 = 4
|
$follower2 = 4
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
$leaderVnode = 4
|
$leaderVnode = 4
|
||||||
$follower1 = 2
|
$follower1 = 2
|
||||||
|
|
|
@ -89,20 +89,20 @@ if $rows != $vgroups then
|
||||||
endi
|
endi
|
||||||
|
|
||||||
if $data[0][4] == leader then
|
if $data[0][4] == leader then
|
||||||
if $data[0][6] == follower then
|
if $data[0][7] == follower then
|
||||||
if $data[0][8] == follower then
|
if $data[0][10] == follower then
|
||||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][3]
|
print ---- vgroup $data[0][0] leader locate on dnode $data[0][3]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[0][6] == leader then
|
elif $data[0][6] == leader then
|
||||||
if $data[0][4] == follower then
|
if $data[0][7] == follower then
|
||||||
if $data[0][8] == follower then
|
if $data[0][10] == follower then
|
||||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][5]
|
print ---- vgroup $data[0][0] leader locate on dnode $data[0][5]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[0][8] == leader then
|
elif $data[0][10] == leader then
|
||||||
if $data[0][4] == follower then
|
if $data[0][4] == follower then
|
||||||
if $data[0][6] == follower then
|
if $data[0][7] == follower then
|
||||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][7]
|
print ---- vgroup $data[0][0] leader locate on dnode $data[0][7]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
|
@ -225,20 +225,20 @@ if $rows != $vgroups then
|
||||||
endi
|
endi
|
||||||
|
|
||||||
if $data[0][4] == leader then
|
if $data[0][4] == leader then
|
||||||
if $data[0][6] == follower then
|
if $data[0][7] == follower then
|
||||||
if $data[0][8] == follower then
|
if $data[0][10] == follower then
|
||||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][3]
|
print ---- vgroup $data[0][0] leader locate on dnode $data[0][3]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[0][6] == leader then
|
elif $data[0][7] == leader then
|
||||||
if $data[0][4] == follower then
|
if $data[0][4] == follower then
|
||||||
if $data[0][8] == follower then
|
if $data[0][10] == follower then
|
||||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][5]
|
print ---- vgroup $data[0][0] leader locate on dnode $data[0][5]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[0][8] == leader then
|
elif $data[0][10] == leader then
|
||||||
if $data[0][4] == follower then
|
if $data[0][4] == follower then
|
||||||
if $data[0][6] == follower then
|
if $data[0][7] == follower then
|
||||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][7]
|
print ---- vgroup $data[0][0] leader locate on dnode $data[0][7]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
|
@ -437,20 +437,20 @@ if $rows != $vgroups then
|
||||||
endi
|
endi
|
||||||
|
|
||||||
if $data[0][4] == leader then
|
if $data[0][4] == leader then
|
||||||
if $data[0][6] == follower then
|
if $data[0][7] == follower then
|
||||||
if $data[0][8] == follower then
|
if $data[0][10] == follower then
|
||||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][3]
|
print ---- vgroup $data[0][0] leader locate on dnode $data[0][3]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[0][6] == leader then
|
elif $data[0][7] == leader then
|
||||||
if $data[0][4] == follower then
|
if $data[0][4] == follower then
|
||||||
if $data[0][8] == follower then
|
if $data[0][10] == follower then
|
||||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][5]
|
print ---- vgroup $data[0][0] leader locate on dnode $data[0][5]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[0][8] == leader then
|
elif $data[0][10] == leader then
|
||||||
if $data[0][4] == follower then
|
if $data[0][4] == follower then
|
||||||
if $data[0][6] == follower then
|
if $data[0][7] == follower then
|
||||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][7]
|
print ---- vgroup $data[0][0] leader locate on dnode $data[0][7]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
|
|
|
@ -92,20 +92,20 @@ if $rows != $vgroups then
|
||||||
endi
|
endi
|
||||||
|
|
||||||
if $data[0][4] == leader then
|
if $data[0][4] == leader then
|
||||||
if $data[0][6] == follower then
|
if $data[0][7] == follower then
|
||||||
if $data[0][8] == follower then
|
if $data[0][10] == follower then
|
||||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][3]
|
print ---- vgroup $data[0][0] leader locate on dnode $data[0][3]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[0][6] == leader then
|
elif $data[0][7] == leader then
|
||||||
if $data[0][4] == follower then
|
if $data[0][4] == follower then
|
||||||
if $data[0][8] == follower then
|
if $data[0][10] == follower then
|
||||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][5]
|
print ---- vgroup $data[0][0] leader locate on dnode $data[0][5]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[0][8] == leader then
|
elif $data[0][10] == leader then
|
||||||
if $data[0][4] == follower then
|
if $data[0][4] == follower then
|
||||||
if $data[0][6] == follower then
|
if $data[0][7] == follower then
|
||||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][7]
|
print ---- vgroup $data[0][0] leader locate on dnode $data[0][7]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
|
@ -114,20 +114,20 @@ else
|
||||||
endi
|
endi
|
||||||
|
|
||||||
if $data[1][4] == leader then
|
if $data[1][4] == leader then
|
||||||
if $data[1][6] == follower then
|
if $data[1][7] == follower then
|
||||||
if $data[1][8] == follower then
|
if $data[1][10] == follower then
|
||||||
print ---- vgroup $data[1][0] leader locate on dnode $data[1][3]
|
print ---- vgroup $data[1][0] leader locate on dnode $data[1][3]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[1][6] == leader then
|
elif $data[1][7] == leader then
|
||||||
if $data[1][4] == follower then
|
if $data[1][4] == follower then
|
||||||
if $data[1][8] == follower then
|
if $data[1][10] == follower then
|
||||||
print ---- vgroup $data[1][0] leader locate on dnode $data[1][5]
|
print ---- vgroup $data[1][0] leader locate on dnode $data[1][5]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[1][8] == leader then
|
elif $data[1][10] == leader then
|
||||||
if $data[1][4] == follower then
|
if $data[1][4] == follower then
|
||||||
if $data[1][6] == follower then
|
if $data[1][7] == follower then
|
||||||
print ---- vgroup $data[1][0] leader locate on dnode $data[1][7]
|
print ---- vgroup $data[1][0] leader locate on dnode $data[1][7]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
|
@ -136,20 +136,20 @@ else
|
||||||
endi
|
endi
|
||||||
|
|
||||||
if $data[2][4] == leader then
|
if $data[2][4] == leader then
|
||||||
if $data[2][6] == follower then
|
if $data[2][7] == follower then
|
||||||
if $data[2][8] == follower then
|
if $data[2][10] == follower then
|
||||||
print ---- vgroup $data[2][0] leader locate on dnode $data[2][3]
|
print ---- vgroup $data[2][0] leader locate on dnode $data[2][3]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[2][6] == leader then
|
elif $data[2][7] == leader then
|
||||||
if $data[2][4] == follower then
|
if $data[2][4] == follower then
|
||||||
if $data[2][8] == follower then
|
if $data[2][10] == follower then
|
||||||
print ---- vgroup $data[2][0] leader locate on dnode $data[2][5]
|
print ---- vgroup $data[2][0] leader locate on dnode $data[2][5]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[2][8] == leader then
|
elif $data[2][10] == leader then
|
||||||
if $data[2][4] == follower then
|
if $data[2][4] == follower then
|
||||||
if $data[2][6] == follower then
|
if $data[2][7] == follower then
|
||||||
print ---- vgroup $data[2][0] leader locate on dnode $data[2][7]
|
print ---- vgroup $data[2][0] leader locate on dnode $data[2][7]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
|
@ -158,20 +158,20 @@ else
|
||||||
endi
|
endi
|
||||||
|
|
||||||
if $data[3][4] == leader then
|
if $data[3][4] == leader then
|
||||||
if $data[3][6] == follower then
|
if $data[3][7] == follower then
|
||||||
if $data[3][8] == follower then
|
if $data[3][10] == follower then
|
||||||
print ---- vgroup $data[3][0] leader locate on dnode $data[3][3]
|
print ---- vgroup $data[3][0] leader locate on dnode $data[3][3]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[3][6] == leader then
|
elif $data[3][7] == leader then
|
||||||
if $data[3][4] == follower then
|
if $data[3][4] == follower then
|
||||||
if $data[3][8] == follower then
|
if $data[3][10] == follower then
|
||||||
print ---- vgroup $data[3][0] leader locate on dnode $data[3][5]
|
print ---- vgroup $data[3][0] leader locate on dnode $data[3][5]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[3][8] == leader then
|
elif $data[3][10] == leader then
|
||||||
if $data[3][4] == follower then
|
if $data[3][4] == follower then
|
||||||
if $data[3][6] == follower then
|
if $data[3][7] == follower then
|
||||||
print ---- vgroup $data[3][0] leader locate on dnode $data[3][7]
|
print ---- vgroup $data[3][0] leader locate on dnode $data[3][7]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
|
@ -180,20 +180,20 @@ else
|
||||||
endi
|
endi
|
||||||
|
|
||||||
if $data[4][4] == leader then
|
if $data[4][4] == leader then
|
||||||
if $data[4][6] == follower then
|
if $data[4][7] == follower then
|
||||||
if $data[4][8] == follower then
|
if $data[4][10] == follower then
|
||||||
print ---- vgroup $data[4][0] leader locate on dnode $data[4][3]
|
print ---- vgroup $data[4][0] leader locate on dnode $data[4][3]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[4][6] == leader then
|
elif $data[4][7] == leader then
|
||||||
if $data[4][4] == follower then
|
if $data[4][4] == follower then
|
||||||
if $data[4][8] == follower then
|
if $data[4][10] == follower then
|
||||||
print ---- vgroup $data[4][0] leader locate on dnode $data[4][5]
|
print ---- vgroup $data[4][0] leader locate on dnode $data[4][5]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[4][8] == leader then
|
elif $data[4][10] == leader then
|
||||||
if $data[4][4] == follower then
|
if $data[4][4] == follower then
|
||||||
if $data[4][6] == follower then
|
if $data[4][7] == follower then
|
||||||
print ---- vgroup $data[4][0] leader locate on dnode $data[4][7]
|
print ---- vgroup $data[4][0] leader locate on dnode $data[4][7]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
|
@ -305,20 +305,20 @@ if $rows != $vgroups then
|
||||||
endi
|
endi
|
||||||
|
|
||||||
if $data[0][4] == leader then
|
if $data[0][4] == leader then
|
||||||
if $data[0][6] == follower then
|
if $data[0][7] == follower then
|
||||||
if $data[0][8] == follower then
|
if $data[0][10] == follower then
|
||||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][3]
|
print ---- vgroup $data[0][0] leader locate on dnode $data[0][3]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[0][6] == leader then
|
elif $data[0][7] == leader then
|
||||||
if $data[0][4] == follower then
|
if $data[0][4] == follower then
|
||||||
if $data[0][8] == follower then
|
if $data[0][10] == follower then
|
||||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][5]
|
print ---- vgroup $data[0][0] leader locate on dnode $data[0][5]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[0][8] == leader then
|
elif $data[0][10] == leader then
|
||||||
if $data[0][4] == follower then
|
if $data[0][4] == follower then
|
||||||
if $data[0][6] == follower then
|
if $data[0][7] == follower then
|
||||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][7]
|
print ---- vgroup $data[0][0] leader locate on dnode $data[0][7]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
|
@ -327,20 +327,20 @@ else
|
||||||
endi
|
endi
|
||||||
|
|
||||||
if $data[1][4] == leader then
|
if $data[1][4] == leader then
|
||||||
if $data[1][6] == follower then
|
if $data[1][7] == follower then
|
||||||
if $data[1][8] == follower then
|
if $data[1][10] == follower then
|
||||||
print ---- vgroup $data[1][0] leader locate on dnode $data[1][3]
|
print ---- vgroup $data[1][0] leader locate on dnode $data[1][3]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[1][6] == leader then
|
elif $data[1][7] == leader then
|
||||||
if $data[1][4] == follower then
|
if $data[1][4] == follower then
|
||||||
if $data[1][8] == follower then
|
if $data[1][10] == follower then
|
||||||
print ---- vgroup $data[1][0] leader locate on dnode $data[1][5]
|
print ---- vgroup $data[1][0] leader locate on dnode $data[1][5]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[1][8] == leader then
|
elif $data[1][10] == leader then
|
||||||
if $data[1][4] == follower then
|
if $data[1][4] == follower then
|
||||||
if $data[1][6] == follower then
|
if $data[1][7] == follower then
|
||||||
print ---- vgroup $data[1][0] leader locate on dnode $data[1][7]
|
print ---- vgroup $data[1][0] leader locate on dnode $data[1][7]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
|
@ -349,20 +349,20 @@ else
|
||||||
endi
|
endi
|
||||||
|
|
||||||
if $data[2][4] == leader then
|
if $data[2][4] == leader then
|
||||||
if $data[2][6] == follower then
|
if $data[2][7] == follower then
|
||||||
if $data[2][8] == follower then
|
if $data[2][10] == follower then
|
||||||
print ---- vgroup $data[2][0] leader locate on dnode $data[2][3]
|
print ---- vgroup $data[2][0] leader locate on dnode $data[2][3]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[2][6] == leader then
|
elif $data[2][7] == leader then
|
||||||
if $data[2][4] == follower then
|
if $data[2][4] == follower then
|
||||||
if $data[2][8] == follower then
|
if $data[2][10] == follower then
|
||||||
print ---- vgroup $data[2][0] leader locate on dnode $data[2][5]
|
print ---- vgroup $data[2][0] leader locate on dnode $data[2][5]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[2][8] == leader then
|
elif $data[2][10] == leader then
|
||||||
if $data[2][4] == follower then
|
if $data[2][4] == follower then
|
||||||
if $data[2][6] == follower then
|
if $data[2][7] == follower then
|
||||||
print ---- vgroup $data[2][0] leader locate on dnode $data[2][7]
|
print ---- vgroup $data[2][0] leader locate on dnode $data[2][7]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
|
@ -371,20 +371,20 @@ else
|
||||||
endi
|
endi
|
||||||
|
|
||||||
if $data[3][4] == leader then
|
if $data[3][4] == leader then
|
||||||
if $data[3][6] == follower then
|
if $data[3][7] == follower then
|
||||||
if $data[3][8] == follower then
|
if $data[3][10] == follower then
|
||||||
print ---- vgroup $data[3][0] leader locate on dnode $data[3][3]
|
print ---- vgroup $data[3][0] leader locate on dnode $data[3][3]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[3][6] == leader then
|
elif $data[3][7] == leader then
|
||||||
if $data[3][4] == follower then
|
if $data[3][4] == follower then
|
||||||
if $data[3][8] == follower then
|
if $data[3][10] == follower then
|
||||||
print ---- vgroup $data[3][0] leader locate on dnode $data[3][5]
|
print ---- vgroup $data[3][0] leader locate on dnode $data[3][5]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[3][8] == leader then
|
elif $data[3][10] == leader then
|
||||||
if $data[3][4] == follower then
|
if $data[3][4] == follower then
|
||||||
if $data[3][6] == follower then
|
if $data[3][7] == follower then
|
||||||
print ---- vgroup $data[3][0] leader locate on dnode $data[3][7]
|
print ---- vgroup $data[3][0] leader locate on dnode $data[3][7]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
|
@ -393,20 +393,20 @@ else
|
||||||
endi
|
endi
|
||||||
|
|
||||||
if $data[4][4] == leader then
|
if $data[4][4] == leader then
|
||||||
if $data[4][6] == follower then
|
if $data[4][7] == follower then
|
||||||
if $data[4][8] == follower then
|
if $data[4][10] == follower then
|
||||||
print ---- vgroup $data[4][0] leader locate on dnode $data[4][3]
|
print ---- vgroup $data[4][0] leader locate on dnode $data[4][3]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[4][6] == leader then
|
elif $data[4][7] == leader then
|
||||||
if $data[4][4] == follower then
|
if $data[4][4] == follower then
|
||||||
if $data[4][8] == follower then
|
if $data[4][10] == follower then
|
||||||
print ---- vgroup $data[4][0] leader locate on dnode $data[4][5]
|
print ---- vgroup $data[4][0] leader locate on dnode $data[4][5]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[4][8] == leader then
|
elif $data[4][10] == leader then
|
||||||
if $data[4][4] == follower then
|
if $data[4][4] == follower then
|
||||||
if $data[4][6] == follower then
|
if $data[4][7] == follower then
|
||||||
print ---- vgroup $data[4][0] leader locate on dnode $data[4][7]
|
print ---- vgroup $data[4][0] leader locate on dnode $data[4][7]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
|
@ -607,20 +607,20 @@ if $rows != $vgroups then
|
||||||
endi
|
endi
|
||||||
|
|
||||||
if $data[0][4] == leader then
|
if $data[0][4] == leader then
|
||||||
if $data[0][6] == follower then
|
if $data[0][7] == follower then
|
||||||
if $data[0][8] == follower then
|
if $data[0][10] == follower then
|
||||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][3]
|
print ---- vgroup $data[0][0] leader locate on dnode $data[0][3]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[0][6] == leader then
|
elif $data[0][7] == leader then
|
||||||
if $data[0][4] == follower then
|
if $data[0][4] == follower then
|
||||||
if $data[0][8] == follower then
|
if $data[0][10] == follower then
|
||||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][5]
|
print ---- vgroup $data[0][0] leader locate on dnode $data[0][5]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[0][8] == leader then
|
elif $data[0][10] == leader then
|
||||||
if $data[0][4] == follower then
|
if $data[0][4] == follower then
|
||||||
if $data[0][6] == follower then
|
if $data[0][7] == follower then
|
||||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][7]
|
print ---- vgroup $data[0][0] leader locate on dnode $data[0][7]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
|
@ -629,20 +629,20 @@ else
|
||||||
endi
|
endi
|
||||||
|
|
||||||
if $data[1][4] == leader then
|
if $data[1][4] == leader then
|
||||||
if $data[1][6] == follower then
|
if $data[1][7] == follower then
|
||||||
if $data[1][8] == follower then
|
if $data[1][10] == follower then
|
||||||
print ---- vgroup $data[1][0] leader locate on dnode $data[1][3]
|
print ---- vgroup $data[1][0] leader locate on dnode $data[1][3]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[1][6] == leader then
|
elif $data[1][7] == leader then
|
||||||
if $data[1][4] == follower then
|
if $data[1][4] == follower then
|
||||||
if $data[1][8] == follower then
|
if $data[1][10] == follower then
|
||||||
print ---- vgroup $data[1][0] leader locate on dnode $data[1][5]
|
print ---- vgroup $data[1][0] leader locate on dnode $data[1][5]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[1][8] == leader then
|
elif $data[1][10] == leader then
|
||||||
if $data[1][4] == follower then
|
if $data[1][4] == follower then
|
||||||
if $data[1][6] == follower then
|
if $data[1][7] == follower then
|
||||||
print ---- vgroup $data[1][0] leader locate on dnode $data[1][7]
|
print ---- vgroup $data[1][0] leader locate on dnode $data[1][7]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
|
@ -651,20 +651,20 @@ else
|
||||||
endi
|
endi
|
||||||
|
|
||||||
if $data[2][4] == leader then
|
if $data[2][4] == leader then
|
||||||
if $data[2][6] == follower then
|
if $data[2][7] == follower then
|
||||||
if $data[2][8] == follower then
|
if $data[2][10] == follower then
|
||||||
print ---- vgroup $data[2][0] leader locate on dnode $data[2][3]
|
print ---- vgroup $data[2][0] leader locate on dnode $data[2][3]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[2][6] == leader then
|
elif $data[2][7] == leader then
|
||||||
if $data[2][4] == follower then
|
if $data[2][4] == follower then
|
||||||
if $data[2][8] == follower then
|
if $data[2][10] == follower then
|
||||||
print ---- vgroup $data[2][0] leader locate on dnode $data[2][5]
|
print ---- vgroup $data[2][0] leader locate on dnode $data[2][5]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[2][8] == leader then
|
elif $data[2][10] == leader then
|
||||||
if $data[2][4] == follower then
|
if $data[2][4] == follower then
|
||||||
if $data[2][6] == follower then
|
if $data[2][7] == follower then
|
||||||
print ---- vgroup $data[2][0] leader locate on dnode $data[2][7]
|
print ---- vgroup $data[2][0] leader locate on dnode $data[2][7]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
|
@ -673,20 +673,20 @@ else
|
||||||
endi
|
endi
|
||||||
|
|
||||||
if $data[3][4] == leader then
|
if $data[3][4] == leader then
|
||||||
if $data[3][6] == follower then
|
if $data[3][7] == follower then
|
||||||
if $data[3][8] == follower then
|
if $data[3][10] == follower then
|
||||||
print ---- vgroup $data[3][0] leader locate on dnode $data[3][3]
|
print ---- vgroup $data[3][0] leader locate on dnode $data[3][3]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[3][6] == leader then
|
elif $data[3][7] == leader then
|
||||||
if $data[3][4] == follower then
|
if $data[3][4] == follower then
|
||||||
if $data[3][8] == follower then
|
if $data[3][10] == follower then
|
||||||
print ---- vgroup $data[3][0] leader locate on dnode $data[3][5]
|
print ---- vgroup $data[3][0] leader locate on dnode $data[3][5]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[3][8] == leader then
|
elif $data[3][10] == leader then
|
||||||
if $data[3][4] == follower then
|
if $data[3][4] == follower then
|
||||||
if $data[3][6] == follower then
|
if $data[3][7] == follower then
|
||||||
print ---- vgroup $data[3][0] leader locate on dnode $data[3][7]
|
print ---- vgroup $data[3][0] leader locate on dnode $data[3][7]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
|
@ -695,20 +695,20 @@ else
|
||||||
endi
|
endi
|
||||||
|
|
||||||
if $data[4][4] == leader then
|
if $data[4][4] == leader then
|
||||||
if $data[4][6] == follower then
|
if $data[4][7] == follower then
|
||||||
if $data[4][8] == follower then
|
if $data[4][10] == follower then
|
||||||
print ---- vgroup $data[4][0] leader locate on dnode $data[4][3]
|
print ---- vgroup $data[4][0] leader locate on dnode $data[4][3]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[4][6] == leader then
|
elif $data[4][7] == leader then
|
||||||
if $data[4][4] == follower then
|
if $data[4][4] == follower then
|
||||||
if $data[4][8] == follower then
|
if $data[4][10] == follower then
|
||||||
print ---- vgroup $data[4][0] leader locate on dnode $data[4][5]
|
print ---- vgroup $data[4][0] leader locate on dnode $data[4][5]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[4][8] == leader then
|
elif $data[4][10] == leader then
|
||||||
if $data[4][4] == follower then
|
if $data[4][4] == follower then
|
||||||
if $data[4][6] == follower then
|
if $data[4][7] == follower then
|
||||||
print ---- vgroup $data[4][0] leader locate on dnode $data[4][7]
|
print ---- vgroup $data[4][0] leader locate on dnode $data[4][7]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
|
|
|
@ -90,20 +90,20 @@ if $rows != $vgroups then
|
||||||
endi
|
endi
|
||||||
|
|
||||||
if $data[0][4] == leader then
|
if $data[0][4] == leader then
|
||||||
if $data[0][6] == follower then
|
if $data[0][7] == follower then
|
||||||
if $data[0][8] == follower then
|
if $data[0][10] == follower then
|
||||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][3]
|
print ---- vgroup $data[0][0] leader locate on dnode $data[0][3]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[0][6] == leader then
|
elif $data[0][7] == leader then
|
||||||
if $data[0][4] == follower then
|
if $data[0][4] == follower then
|
||||||
if $data[0][8] == follower then
|
if $data[0][10] == follower then
|
||||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][5]
|
print ---- vgroup $data[0][0] leader locate on dnode $data[0][5]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
elif $data[0][8] == leader then
|
elif $data[0][10] == leader then
|
||||||
if $data[0][4] == follower then
|
if $data[0][4] == follower then
|
||||||
if $data[0][6] == follower then
|
if $data[0][7] == follower then
|
||||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][7]
|
print ---- vgroup $data[0][0] leader locate on dnode $data[0][7]
|
||||||
endi
|
endi
|
||||||
endi
|
endi
|
||||||
|
|
|
@ -96,10 +96,10 @@ $leaderExist = 0
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -141,10 +141,10 @@ $leaderExist = 0
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -180,10 +180,10 @@ $leaderExist = 0
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -220,10 +220,10 @@ $leaderExist = 0
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -260,10 +260,10 @@ $leaderExist = 0
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -300,10 +300,10 @@ $leaderExist = 0
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -340,10 +340,10 @@ $leaderExist = 0
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
|
|
@ -71,10 +71,10 @@ endi
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -157,10 +157,10 @@ $leaderExist = 0
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -227,10 +227,10 @@ $leaderExist = 0
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -275,10 +275,10 @@ $leaderExist = 0
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -313,10 +313,10 @@ $leaderExist = 0
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
|
|
@ -68,10 +68,10 @@ endi
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -96,10 +96,10 @@ endi
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -121,10 +121,10 @@ $leaderExist = 0
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -146,10 +146,10 @@ $leaderExist = 0
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
|
|
@ -62,10 +62,10 @@ endi
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
|
|
@ -70,10 +70,10 @@ $leaderExist = 0
|
||||||
if $data(2)[4] == leader then
|
if $data(2)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[6] == leader then
|
if $data(2)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(2)[8] == leader then
|
if $data(2)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
@ -83,10 +83,10 @@ $leaderExist = 0
|
||||||
if $data(3)[4] == leader then
|
if $data(3)[4] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(3)[6] == leader then
|
if $data(3)[7] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $data(3)[8] == leader then
|
if $data(3)[10] == leader then
|
||||||
$leaderExist = 1
|
$leaderExist = 1
|
||||||
endi
|
endi
|
||||||
if $leaderExist != 1 then
|
if $leaderExist != 1 then
|
||||||
|
|
|
@ -222,8 +222,7 @@ class TDTestCase:
|
||||||
|
|
||||||
tdSql.query("select * from information_schema.ins_columns where db_name ='information_schema'")
|
tdSql.query("select * from information_schema.ins_columns where db_name ='information_schema'")
|
||||||
tdLog.info(len(tdSql.queryResult))
|
tdLog.info(len(tdSql.queryResult))
|
||||||
tdSql.checkEqual(True, len(tdSql.queryResult) in range(314, 315))
|
tdSql.checkEqual(True, len(tdSql.queryResult) in range(320, 321))
|
||||||
|
|
||||||
tdSql.query("select * from information_schema.ins_columns where db_name ='performance_schema'")
|
tdSql.query("select * from information_schema.ins_columns where db_name ='performance_schema'")
|
||||||
tdSql.checkEqual(61, len(tdSql.queryResult))
|
tdSql.checkEqual(61, len(tdSql.queryResult))
|
||||||
|
|
||||||
|
|
|
@ -27,8 +27,8 @@ class TDTestCase:
|
||||||
flag = 0
|
flag = 0
|
||||||
for vgid in range (vgNum) :
|
for vgid in range (vgNum) :
|
||||||
v1_status = tdSql.queryResult[vgid][4]
|
v1_status = tdSql.queryResult[vgid][4]
|
||||||
v2_status = tdSql.queryResult[vgid][6]
|
v2_status = tdSql.queryResult[vgid][7]
|
||||||
v3_status = tdSql.queryResult[vgid][8]
|
v3_status = tdSql.queryResult[vgid][10]
|
||||||
if ((v1_status == 'leader') and (v2_status == 'follower') and (v3_status == 'follower')) \
|
if ((v1_status == 'leader') and (v2_status == 'follower') and (v3_status == 'follower')) \
|
||||||
or ((v2_status == 'leader') and (v1_status == 'follower') and (v3_status == 'follower')) \
|
or ((v2_status == 'leader') and (v1_status == 'follower') and (v3_status == 'follower')) \
|
||||||
or ((v3_status == 'leader') and (v2_status == 'follower') and (v1_status == 'follower')):
|
or ((v3_status == 'leader') and (v2_status == 'follower') and (v1_status == 'follower')):
|
||||||
|
|
|
@ -80,7 +80,7 @@ class RestoreBasic:
|
||||||
for i in range(8):
|
for i in range(8):
|
||||||
leader = False
|
leader = False
|
||||||
for j in range(3):
|
for j in range(3):
|
||||||
status = tdSql.getData(i, 4 + j*2)
|
status = tdSql.getData(i, 4 + j*3)
|
||||||
if status == "leader":
|
if status == "leader":
|
||||||
leader = True
|
leader = True
|
||||||
elif status == "follower":
|
elif status == "follower":
|
||||||
|
|
|
@ -251,9 +251,9 @@ class ClusterComCheck:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
elif self.db_replica == 3 :
|
elif self.db_replica == 3 :
|
||||||
vgroup_status_first=[tdSql.queryResult[0][4],tdSql.queryResult[0][6],tdSql.queryResult[0][8]]
|
vgroup_status_first=[tdSql.queryResult[0][4],tdSql.queryResult[0][7],tdSql.queryResult[0][10]]
|
||||||
|
|
||||||
vgroup_status_last=[tdSql.queryResult[last_number][4],tdSql.queryResult[last_number][6],tdSql.queryResult[last_number][8]]
|
vgroup_status_last=[tdSql.queryResult[last_number][4],tdSql.queryResult[last_number][7],tdSql.queryResult[last_number][10]]
|
||||||
if vgroup_status_first.count('leader') == 1 and vgroup_status_first.count('follower') == 2:
|
if vgroup_status_first.count('leader') == 1 and vgroup_status_first.count('follower') == 2:
|
||||||
if vgroup_status_last.count('leader') == 1 and vgroup_status_last.count('follower') == 2:
|
if vgroup_status_last.count('leader') == 1 and vgroup_status_last.count('follower') == 2:
|
||||||
tdSql.query(f"select `replica` from information_schema.ins_databases where `name`='{db_name}';")
|
tdSql.query(f"select `replica` from information_schema.ins_databases where `name`='{db_name}';")
|
||||||
|
|
|
@ -135,11 +135,9 @@ class TDTestCase:
|
||||||
vgroup_id = vgroup_info[0]
|
vgroup_id = vgroup_info[0]
|
||||||
vgroup_status = []
|
vgroup_status = []
|
||||||
for ind , role in enumerate(vgroup_info[3:-4]):
|
for ind , role in enumerate(vgroup_info[3:-4]):
|
||||||
|
if role in ['leader', 'leader*', 'leader**', 'follower']:
|
||||||
if ind%2==0:
|
|
||||||
continue
|
|
||||||
else:
|
|
||||||
vgroup_status.append(role)
|
vgroup_status.append(role)
|
||||||
|
|
||||||
if vgroup_status.count("leader")!=1 or vgroup_status.count("follower")!=2:
|
if vgroup_status.count("leader")!=1 or vgroup_status.count("follower")!=2:
|
||||||
status = False
|
status = False
|
||||||
return status
|
return status
|
||||||
|
|
Loading…
Reference in New Issue