From fbe65197d615ac07c3e65c7ef841072f882c473d Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Mon, 10 Feb 2025 15:58:25 +0800 Subject: [PATCH 01/13] Feat(sync):Add restore progress to the "show vnodes" command, and add the applied index to the "show vgroups" command. --- include/common/tmsg.h | 14 +++++---- include/libs/sync/sync.h | 1 + include/util/tdef.h | 7 +++-- source/common/src/msg/tmsg.c | 6 +++- source/common/src/systable.c | 6 +++- source/dnode/mnode/impl/inc/mndDef.h | 4 ++- source/dnode/mnode/impl/src/mndDnode.c | 2 ++ source/dnode/mnode/impl/src/mndVgroup.c | 39 +++++++++++++++++++++---- source/dnode/vnode/src/vnd/vnodeQuery.c | 2 ++ source/libs/sync/src/syncMain.c | 8 +++++ 10 files changed, 71 insertions(+), 18 deletions(-) diff --git a/include/common/tmsg.h b/include/common/tmsg.h index 82eaa2359e..cedaf223c5 100644 --- a/include/common/tmsg.h +++ b/include/common/tmsg.h @@ -1355,10 +1355,10 @@ typedef struct { int8_t encryptAlgorithm; char dnodeListStr[TSDB_DNODE_LIST_LEN]; // 1. add auto-compact parameters - int32_t compactInterval; // minutes - int32_t compactStartTime; // minutes - int32_t compactEndTime; // minutes - int8_t compactTimeOffset; // hour + int32_t compactInterval; // minutes + int32_t compactStartTime; // minutes + int32_t compactEndTime; // minutes + int8_t compactTimeOffset; // hour } SCreateDbReq; int32_t tSerializeSCreateDbReq(void* buf, int32_t bufLen, SCreateDbReq* pReq); @@ -1777,6 +1777,8 @@ typedef struct { int64_t numOfBatchInsertSuccessReqs; int32_t numOfCachedTables; int32_t learnerProgress; // use one reservered + int64_t syncAppliedIndex; + int64_t syncCommitIndex; } SVnodeLoad; typedef struct { @@ -3937,8 +3939,8 @@ typedef struct { int8_t igExists; int8_t intervalUnit; int8_t slidingUnit; - int8_t timezone; // int8_t is not enough, timezone is unit of second - int32_t dstVgId; // for stream + int8_t timezone; // int8_t is not enough, timezone is unit of second + int32_t dstVgId; // for stream int64_t interval; int64_t offset; int64_t sliding; diff --git a/include/libs/sync/sync.h b/include/libs/sync/sync.h index f1f907ce37..a02634298c 100644 --- a/include/libs/sync/sync.h +++ b/include/libs/sync/sync.h @@ -293,6 +293,7 @@ int32_t syncBecomeAssignedLeader(SSyncNode* ths, SRpcMsg* pRpcMsg); int32_t syncUpdateArbTerm(int64_t rid, SyncTerm arbTerm); SSyncState syncGetState(int64_t rid); +void syncGetCommitIndex(int64_t rid, int64_t* syncCommitIndex); int32_t syncGetArbToken(int64_t rid, char* outToken); int32_t syncGetAssignedLogSynced(int64_t rid); void syncGetRetryEpSet(int64_t rid, SEpSet* pEpSet); diff --git a/include/util/tdef.h b/include/util/tdef.h index f08697b0d4..532592e7ff 100644 --- a/include/util/tdef.h +++ b/include/util/tdef.h @@ -328,8 +328,8 @@ typedef enum ELogicConditionType { #define TSDB_ARB_GROUP_MEMBER_NUM 2 #define TSDB_ARB_TOKEN_SIZE 32 -#define TSDB_TRANS_STAGE_LEN 12 -#define TSDB_TRANS_TYPE_LEN 16 +#define TSDB_TRANS_STAGE_LEN 12 +#define TSDB_TRANS_TYPE_LEN 16 #define TSDB_TRANS_ERROR_LEN 512 #define TSDB_TRANS_OBJTYPE_LEN 40 #define TSDB_TRANS_RESULT_LEN 100 @@ -363,6 +363,7 @@ typedef enum ELogicConditionType { #define TSDB_MAX_REPLICA 5 #define TSDB_MAX_LEARNER_REPLICA 10 +#define TSDB_SYNC_RESOTRE_lEN 8 #define TSDB_SYNC_LOG_BUFFER_SIZE 4096 #define TSDB_SYNC_LOG_BUFFER_RETENTION 256 #define TSDB_SYNC_LOG_BUFFER_THRESHOLD (1024 * 1024 * 5) @@ -678,7 +679,7 @@ typedef enum { TSDB_VERSION_END, } EVersionType; -#define MIN_RESERVE_MEM_SIZE 1024 // MB +#define MIN_RESERVE_MEM_SIZE 1024 // MB #ifdef __cplusplus } diff --git a/source/common/src/msg/tmsg.c b/source/common/src/msg/tmsg.c index 7a51669d46..ba8d136a66 100644 --- a/source/common/src/msg/tmsg.c +++ b/source/common/src/msg/tmsg.c @@ -14,8 +14,8 @@ */ #define _DEFAULT_SOURCE -#include "tmsg.h" #include "tglobal.h" +#include "tmsg.h" #undef TD_MSG_NUMBER_ #undef TD_MSG_DICT_ @@ -1432,6 +1432,8 @@ int32_t tSerializeSStatusReq(void *buf, int32_t bufLen, SStatusReq *pReq) { TAOS_CHECK_EXIT(tEncodeI32(&encoder, pload->learnerProgress)); TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->roleTimeMs)); TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->startTimeMs)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->syncAppliedIndex)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->syncCommitIndex)); } // mnode loads @@ -1542,6 +1544,8 @@ int32_t tDeserializeSStatusReq(void *buf, int32_t bufLen, SStatusReq *pReq) { TAOS_CHECK_EXIT(tDecodeI32(&decoder, &vload.learnerProgress)); TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.roleTimeMs)); TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.startTimeMs)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.syncAppliedIndex)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.syncCommitIndex)); if (taosArrayPush(pReq->pVloads, &vload) == NULL) { TAOS_CHECK_EXIT(terrno); } diff --git a/source/common/src/systable.c b/source/common/src/systable.c index 1f018606a8..8223908663 100644 --- a/source/common/src/systable.c +++ b/source/common/src/systable.c @@ -290,12 +290,16 @@ static const SSysDbTableSchema vgroupsSchema[] = { {.name = "db_name", .bytes = SYSTABLE_SCH_DB_NAME_LEN, .type = TSDB_DATA_TYPE_VARCHAR, .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_applied", .bytes = 4, .type = TSDB_DATA_TYPE_INT, .sysInfo = true}, {.name = "v1_status", .bytes = 9 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, {.name = "v2_dnode", .bytes = 2, .type = TSDB_DATA_TYPE_SMALLINT, .sysInfo = true}, + {.name = "v2_applied", .bytes = 4, .type = TSDB_DATA_TYPE_INT, .sysInfo = true}, {.name = "v2_status", .bytes = 9 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, {.name = "v3_dnode", .bytes = 2, .type = TSDB_DATA_TYPE_SMALLINT, .sysInfo = true}, + {.name = "v3_applied", .bytes = 4, .type = TSDB_DATA_TYPE_INT, .sysInfo = true}, {.name = "v3_status", .bytes = 9 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, {.name = "v4_dnode", .bytes = 2, .type = TSDB_DATA_TYPE_SMALLINT, .sysInfo = true}, + {.name = "v4_applied", .bytes = 4, .type = TSDB_DATA_TYPE_INT, .sysInfo = true}, {.name = "v4_status", .bytes = 9 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, {.name = "cacheload", .bytes = 4, .type = TSDB_DATA_TYPE_INT, .sysInfo = true}, {.name = "cacheelements", .bytes = 4, .type = TSDB_DATA_TYPE_INT, .sysInfo = true}, @@ -366,7 +370,7 @@ static const SSysDbTableSchema vnodesSchema[] = { {.name = "status", .bytes = 9 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .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 = "restored", .bytes = 1, .type = TSDB_DATA_TYPE_BOOL, .sysInfo = true}, + {.name = "restored", .bytes = TSDB_SYNC_RESOTRE_lEN, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, }; static const SSysDbTableSchema userUserPrivilegesSchema[] = { diff --git a/source/dnode/mnode/impl/inc/mndDef.h b/source/dnode/mnode/impl/inc/mndDef.h index 9bed10ce99..78809a2d58 100644 --- a/source/dnode/mnode/impl/inc/mndDef.h +++ b/source/dnode/mnode/impl/inc/mndDef.h @@ -136,7 +136,7 @@ typedef enum { typedef enum { TRN_KILL_MODE_SKIP = 0, TRN_KILL_MODE_INTERUPT = 1, - //TRN_KILL_MODE_ROLLBACK = 2, + // TRN_KILL_MODE_ROLLBACK = 2, } ETrnKillMode; typedef enum { @@ -476,6 +476,8 @@ typedef struct { int32_t dnodeId; ESyncState syncState; int64_t syncTerm; + int64_t syncAppliedIndex; + int64_t syncCommitIndex; bool syncRestore; bool syncCanRead; int64_t roleTimeMs; diff --git a/source/dnode/mnode/impl/src/mndDnode.c b/source/dnode/mnode/impl/src/mndDnode.c index ca119191eb..57b82fbd17 100644 --- a/source/dnode/mnode/impl/src/mndDnode.c +++ b/source/dnode/mnode/impl/src/mndDnode.c @@ -540,6 +540,8 @@ static bool mndUpdateVnodeState(int32_t vgId, SVnodeGid *pGid, SVnodeLoad *pVloa bool roleChanged = pGid->syncState != pVload->syncState || (pVload->syncTerm != -1 && pGid->syncTerm != pVload->syncTerm) || pGid->roleTimeMs != pVload->roleTimeMs; + pGid->syncAppliedIndex = pVload->syncAppliedIndex; + pGid->syncCommitIndex = pVload->syncCommitIndex; if (roleChanged || pGid->syncRestore != pVload->syncRestore || pGid->syncCanRead != pVload->syncCanRead || pGid->startTimeMs != pVload->startTimeMs) { mInfo( diff --git a/source/dnode/mnode/impl/src/mndVgroup.c b/source/dnode/mnode/impl/src/mndVgroup.c index e20afb7201..209961a3b8 100644 --- a/source/dnode/mnode/impl/src/mndVgroup.c +++ b/source/dnode/mnode/impl/src/mndVgroup.c @@ -244,6 +244,8 @@ static int32_t mndVgroupActionUpdate(SSdb *pSdb, SVgObj *pOld, SVgObj *pNew) { pNewGid->syncState = pOldGid->syncState; pNewGid->syncRestore = pOldGid->syncRestore; pNewGid->syncCanRead = pOldGid->syncCanRead; + pNewGid->syncAppliedIndex = pOldGid->syncAppliedIndex; + pNewGid->syncCommitIndex = pOldGid->syncCommitIndex; } } } @@ -1065,6 +1067,13 @@ static int32_t mndRetrieveVgroups(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *p return code; } + pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); + code = colDataSetVal(pColInfo, numOfRows, (const char *)&pVgroup->vnodeGid[i].syncAppliedIndex, false); + if (code != 0) { + mError("vgId:%d, failed to set role, since %s", pVgroup->vgId, tstrerror(code)); + return code; + } + bool exist = false; bool online = false; SDnodeObj *pDnode = mndAcquireDnode(pMnode, pVgroup->vnodeGid[i].dnodeId); @@ -1126,6 +1135,8 @@ static int32_t mndRetrieveVgroups(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *p colDataSetNULL(pColInfo, numOfRows); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); colDataSetNULL(pColInfo, numOfRows); + pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); + colDataSetNULL(pColInfo, numOfRows); } } @@ -1232,6 +1243,14 @@ int64_t mndGetVnodesMemory(SMnode *pMnode, int32_t dnodeId) { return vnodeMemory; } +double calculatePercentage(double part, double total) { + if (total == 0) { + return 0.0; + } + double percentage = (part / total) * 100; + return round(percentage * 100) / 100; +} + static int32_t mndRetrieveVnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, int32_t rows) { SMnode *pMnode = pReq->info.node; SSdb *pSdb = pMnode->pSdb; @@ -1313,12 +1332,20 @@ static int32_t mndRetrieveVnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB } pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - code = colDataSetVal(pColInfo, numOfRows, (const char *)&pGid->syncRestore, false); + char restoreBuf[20] = {0}; + if (pGid->syncRestore) { + sprintf(restoreBuf, "true"); + } else { + double percentage = calculatePercentage(pGid->syncAppliedIndex, pGid->syncCommitIndex); + sprintf(restoreBuf, "%.2f", percentage); + } + + STR_TO_VARSTR(buf, restoreBuf); + code = colDataSetVal(pColInfo, numOfRows, (const char *)buf, false); if (code != 0) { mError("vgId:%d, failed to set syncRestore, since %s", pVgroup->vgId, tstrerror(code)); return code; } - numOfRows++; sdbRelease(pSdb, pDnode); } @@ -2771,7 +2798,7 @@ int32_t mndBuildAlterVgroupAction(SMnode *pMnode, STrans *pTrans, SDbObj *pOldDb pVgroup->vnodeGid[0].dnodeId); // add second - if (pNewVgroup->replica == 1){ + if (pNewVgroup->replica == 1) { TAOS_CHECK_RETURN(mndAddVnodeToVgroup(pMnode, pTrans, pNewVgroup, pArray)); } @@ -2792,8 +2819,8 @@ int32_t mndBuildAlterVgroupAction(SMnode *pMnode, STrans *pTrans, SDbObj *pOldDb TAOS_CHECK_RETURN(mndAddAlterVnodeConfirmAction(pMnode, pTrans, pNewDb, pNewVgroup)); // add third - if (pNewVgroup->replica == 2){ - TAOS_CHECK_RETURN (mndAddVnodeToVgroup(pMnode, pTrans, pNewVgroup, pArray)); + if (pNewVgroup->replica == 2) { + TAOS_CHECK_RETURN(mndAddVnodeToVgroup(pMnode, pTrans, pNewVgroup, pArray)); } pNewVgroup->vnodeGid[0].nodeRole = TAOS_SYNC_ROLE_VOTER; @@ -2823,7 +2850,7 @@ int32_t mndBuildAlterVgroupAction(SMnode *pMnode, STrans *pTrans, SDbObj *pOldDb TAOS_CHECK_RETURN(mndRemoveVnodeFromVgroup(pMnode, pTrans, pNewVgroup, pArray, &del2)); TAOS_CHECK_RETURN(mndAddDropVnodeAction(pMnode, pTrans, pNewDb, pNewVgroup, &del2, true)); TAOS_CHECK_RETURN( - mndAddAlterVnodeReplicaAction(pMnode, pTrans, pNewDb, pNewVgroup, pNewVgroup->vnodeGid[0].dnodeId)); + mndAddAlterVnodeReplicaAction(pMnode, pTrans, pNewDb, pNewVgroup, pNewVgroup->vnodeGid[0].dnodeId)); TAOS_CHECK_RETURN(mndAddAlterVnodeConfirmAction(pMnode, pTrans, pNewDb, pNewVgroup)); } else if (pNewDb->cfg.replications == 2) { mInfo("db:%s, vgId:%d, will add 1 vnode, vn:0 dnode:%d", pVgroup->dbName, pVgroup->vgId, diff --git a/source/dnode/vnode/src/vnd/vnodeQuery.c b/source/dnode/vnode/src/vnd/vnodeQuery.c index 2b07de916c..dda2e467c1 100644 --- a/source/dnode/vnode/src/vnd/vnodeQuery.c +++ b/source/dnode/vnode/src/vnd/vnodeQuery.c @@ -499,6 +499,8 @@ _exit: int32_t vnodeGetLoad(SVnode *pVnode, SVnodeLoad *pLoad) { SSyncState state = syncGetState(pVnode->sync); + pLoad->syncAppliedIndex = pVnode->state.applied; + syncGetCommitIndex(pVnode->sync, &pLoad->syncCommitIndex); pLoad->vgId = TD_VID(pVnode); pLoad->syncState = state.state; diff --git a/source/libs/sync/src/syncMain.c b/source/libs/sync/src/syncMain.c index 0933fd48c7..78ae197079 100644 --- a/source/libs/sync/src/syncMain.c +++ b/source/libs/sync/src/syncMain.c @@ -679,6 +679,14 @@ SSyncState syncGetState(int64_t rid) { 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 code = 0; SSyncNode* pSyncNode = syncNodeAcquire(rid); From b62d8d37b173cc382c05bbb9056d4d5abf4a638e Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Tue, 11 Feb 2025 15:51:05 +0800 Subject: [PATCH 02/13] Feat(sync):Use remaining time to replace progress. --- include/util/tdef.h | 2 +- source/common/src/systable.c | 3 +- source/dnode/mnode/impl/inc/mndDef.h | 2 ++ source/dnode/mnode/impl/src/mndDnode.c | 24 ++++++++++++++ source/dnode/mnode/impl/src/mndVgroup.c | 42 ++++++++++++++++--------- 5 files changed, 56 insertions(+), 17 deletions(-) diff --git a/include/util/tdef.h b/include/util/tdef.h index 532592e7ff..862c18da28 100644 --- a/include/util/tdef.h +++ b/include/util/tdef.h @@ -363,7 +363,7 @@ typedef enum ELogicConditionType { #define TSDB_MAX_REPLICA 5 #define TSDB_MAX_LEARNER_REPLICA 10 -#define TSDB_SYNC_RESOTRE_lEN 8 +#define TSDB_SYNC_RESOTRE_lEN 20 #define TSDB_SYNC_LOG_BUFFER_SIZE 4096 #define TSDB_SYNC_LOG_BUFFER_RETENTION 256 #define TSDB_SYNC_LOG_BUFFER_THRESHOLD (1024 * 1024 * 5) diff --git a/source/common/src/systable.c b/source/common/src/systable.c index 8223908663..dbab7d892e 100644 --- a/source/common/src/systable.c +++ b/source/common/src/systable.c @@ -370,7 +370,8 @@ static const SSysDbTableSchema vnodesSchema[] = { {.name = "status", .bytes = 9 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .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 = "restored", .bytes = TSDB_SYNC_RESOTRE_lEN, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, + {.name = "restored", .bytes = 1, .type = TSDB_DATA_TYPE_BOOL, .sysInfo = true}, + {.name = "restored_finish", .bytes = TSDB_SYNC_RESOTRE_lEN, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, }; static const SSysDbTableSchema userUserPrivilegesSchema[] = { diff --git a/source/dnode/mnode/impl/inc/mndDef.h b/source/dnode/mnode/impl/inc/mndDef.h index 78809a2d58..601dd28bb2 100644 --- a/source/dnode/mnode/impl/inc/mndDef.h +++ b/source/dnode/mnode/impl/inc/mndDef.h @@ -477,6 +477,8 @@ typedef struct { ESyncState syncState; int64_t syncTerm; int64_t syncAppliedIndex; + int64_t lastSyncAppliedIndexUpdateTime; + double appliedRate; int64_t syncCommitIndex; bool syncRestore; bool syncCanRead; diff --git a/source/dnode/mnode/impl/src/mndDnode.c b/source/dnode/mnode/impl/src/mndDnode.c index 57b82fbd17..d666b6cd9d 100644 --- a/source/dnode/mnode/impl/src/mndDnode.c +++ b/source/dnode/mnode/impl/src/mndDnode.c @@ -535,11 +535,35 @@ static int32_t mndCheckClusterCfgPara(SMnode *pMnode, SDnodeObj *pDnode, const S 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) { bool stateChanged = false; bool roleChanged = pGid->syncState != pVload->syncState || (pVload->syncTerm != -1 && pGid->syncTerm != pVload->syncTerm) || pGid->roleTimeMs != pVload->roleTimeMs; + + if (!pVload->syncRestore) { + 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 || diff --git a/source/dnode/mnode/impl/src/mndVgroup.c b/source/dnode/mnode/impl/src/mndVgroup.c index 209961a3b8..f4f3866dc7 100644 --- a/source/dnode/mnode/impl/src/mndVgroup.c +++ b/source/dnode/mnode/impl/src/mndVgroup.c @@ -1243,12 +1243,19 @@ int64_t mndGetVnodesMemory(SMnode *pMnode, int32_t dnodeId) { return vnodeMemory; } -double calculatePercentage(double part, double total) { - if (total == 0) { - return 0.0; +void calculateRstoreFinishTime(double rate, int64_t applyCount, char *restoreStr, size_t restoreStrSize) { + if (rate == 0) { + snprintf(restoreStr, restoreStrSize, "0:0:0"); + return; } - double percentage = (part / total) * 100; - return round(percentage * 100) / 100; + + 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) { @@ -1332,20 +1339,25 @@ static int32_t mndRetrieveVnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB } pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - char restoreBuf[20] = {0}; - if (pGid->syncRestore) { - sprintf(restoreBuf, "true"); - } else { - double percentage = calculatePercentage(pGid->syncAppliedIndex, pGid->syncCommitIndex); - sprintf(restoreBuf, "%.2f", percentage); - } - - STR_TO_VARSTR(buf, restoreBuf); - code = colDataSetVal(pColInfo, numOfRows, (const char *)buf, false); + code = colDataSetVal(pColInfo, numOfRows, (const char *)&pGid->syncRestore, false); if (code != 0) { mError("vgId:%d, failed to set syncRestore, since %s", pVgroup->vgId, tstrerror(code)); return code; } + + pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); + char restoreStr[20] = {0}; + if (!pGid->syncRestore) { + calculateRstoreFinishTime(pGid->appliedRate, pGid->syncCommitIndex - pGid->syncAppliedIndex, restoreStr, + sizeof(restoreStr)); + } + STR_TO_VARSTR(buf, restoreStr); + 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; + } + numOfRows++; sdbRelease(pSdb, pDnode); } From a1a3f8328357cb7ddaf1372392c48350beaec828 Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Wed, 12 Feb 2025 09:55:36 +0800 Subject: [PATCH 03/13] Add unapplied to show vnodes. --- source/common/src/systable.c | 1 + source/dnode/mnode/impl/src/mndVgroup.c | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/source/common/src/systable.c b/source/common/src/systable.c index dbab7d892e..0a9ca8f884 100644 --- a/source/common/src/systable.c +++ b/source/common/src/systable.c @@ -372,6 +372,7 @@ static const SSysDbTableSchema vnodesSchema[] = { {.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_finish", .bytes = TSDB_SYNC_RESOTRE_lEN, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, + {.name = "unapplied", .bytes = 4, .type = TSDB_DATA_TYPE_INT, .sysInfo = true}, }; static const SSysDbTableSchema userUserPrivilegesSchema[] = { diff --git a/source/dnode/mnode/impl/src/mndVgroup.c b/source/dnode/mnode/impl/src/mndVgroup.c index f4f3866dc7..1f295af62f 100644 --- a/source/dnode/mnode/impl/src/mndVgroup.c +++ b/source/dnode/mnode/impl/src/mndVgroup.c @@ -1345,11 +1345,11 @@ static int32_t mndRetrieveVnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB return code; } + int64_t unappliedCount = pGid->syncCommitIndex - pGid->syncAppliedIndex; pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); char restoreStr[20] = {0}; if (!pGid->syncRestore) { - calculateRstoreFinishTime(pGid->appliedRate, pGid->syncCommitIndex - pGid->syncAppliedIndex, restoreStr, - sizeof(restoreStr)); + calculateRstoreFinishTime(pGid->appliedRate, unappliedCount, restoreStr, sizeof(restoreStr)); } STR_TO_VARSTR(buf, restoreStr); colDataSetVal(pColInfo, numOfRows, (const char *)&buf, false); @@ -1358,6 +1358,13 @@ static int32_t mndRetrieveVnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB 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++; sdbRelease(pSdb, pDnode); } From 359399f1cd924858de959ba2def8ca031b10efed Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Wed, 12 Feb 2025 14:49:59 +0800 Subject: [PATCH 04/13] feat rename some names. --- include/util/tdef.h | 3 ++- source/common/src/systable.c | 10 +++++----- source/dnode/mnode/impl/src/mndDnode.c | 4 ++-- source/dnode/mnode/impl/src/mndVgroup.c | 22 ++++++++++++++-------- 4 files changed, 23 insertions(+), 16 deletions(-) diff --git a/include/util/tdef.h b/include/util/tdef.h index 862c18da28..ee3284991f 100644 --- a/include/util/tdef.h +++ b/include/util/tdef.h @@ -363,7 +363,8 @@ typedef enum ELogicConditionType { #define TSDB_MAX_REPLICA 5 #define TSDB_MAX_LEARNER_REPLICA 10 -#define TSDB_SYNC_RESOTRE_lEN 20 +#define TSDB_SYNC_RESTORE_lEN 20 +#define TSDB_SYNC_APPLY_COMMIT_LEN 27 #define TSDB_SYNC_LOG_BUFFER_SIZE 4096 #define TSDB_SYNC_LOG_BUFFER_RETENTION 256 #define TSDB_SYNC_LOG_BUFFER_THRESHOLD (1024 * 1024 * 5) diff --git a/source/common/src/systable.c b/source/common/src/systable.c index 0a9ca8f884..636ac4da7e 100644 --- a/source/common/src/systable.c +++ b/source/common/src/systable.c @@ -290,17 +290,17 @@ static const SSysDbTableSchema vgroupsSchema[] = { {.name = "db_name", .bytes = SYSTABLE_SCH_DB_NAME_LEN, .type = TSDB_DATA_TYPE_VARCHAR, .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_applied", .bytes = 4, .type = TSDB_DATA_TYPE_INT, .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, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, {.name = "v2_dnode", .bytes = 2, .type = TSDB_DATA_TYPE_SMALLINT, .sysInfo = true}, - {.name = "v2_applied", .bytes = 4, .type = TSDB_DATA_TYPE_INT, .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, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, {.name = "v3_dnode", .bytes = 2, .type = TSDB_DATA_TYPE_SMALLINT, .sysInfo = true}, - {.name = "v3_applied", .bytes = 4, .type = TSDB_DATA_TYPE_INT, .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, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, {.name = "v4_dnode", .bytes = 2, .type = TSDB_DATA_TYPE_SMALLINT, .sysInfo = true}, - {.name = "v4_applied", .bytes = 4, .type = TSDB_DATA_TYPE_INT, .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, .type = TSDB_DATA_TYPE_VARCHAR, .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 = "tsma", .bytes = 1, .type = TSDB_DATA_TYPE_TINYINT, .sysInfo = true}, @@ -371,7 +371,7 @@ static const SSysDbTableSchema vnodesSchema[] = { {.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 = "restored", .bytes = 1, .type = TSDB_DATA_TYPE_BOOL, .sysInfo = true}, - {.name = "restored_finish", .bytes = TSDB_SYNC_RESOTRE_lEN, .type = TSDB_DATA_TYPE_VARCHAR, .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}, }; diff --git a/source/dnode/mnode/impl/src/mndDnode.c b/source/dnode/mnode/impl/src/mndDnode.c index d666b6cd9d..1a74573490 100644 --- a/source/dnode/mnode/impl/src/mndDnode.c +++ b/source/dnode/mnode/impl/src/mndDnode.c @@ -539,7 +539,7 @@ double calcAppliedRate(int64_t currentCount, int64_t lastCount, int64_t currentT if ((currentTimeMs <= lastTimeMs) || (currentCount <= lastCount)) { return 0.0; } - + int64_t deltaCount = currentCount - lastCount; int64_t deltaMs = currentTimeMs - lastTimeMs; double rate = (double)deltaCount / (double)deltaMs; @@ -552,7 +552,7 @@ static bool mndUpdateVnodeState(int32_t vgId, SVnodeGid *pGid, SVnodeLoad *pVloa (pVload->syncTerm != -1 && pGid->syncTerm != pVload->syncTerm) || pGid->roleTimeMs != pVload->roleTimeMs; - if (!pVload->syncRestore) { + if (pVload->syncCommitIndex > pVload->syncAppliedIndex) { if (pGid->lastSyncAppliedIndexUpdateTime == 0) { pGid->lastSyncAppliedIndexUpdateTime = taosGetTimestampMs(); } else if (pGid->syncAppliedIndex != pVload->syncAppliedIndex) { diff --git a/source/dnode/mnode/impl/src/mndVgroup.c b/source/dnode/mnode/impl/src/mndVgroup.c index 1f295af62f..ca48b23e6f 100644 --- a/source/dnode/mnode/impl/src/mndVgroup.c +++ b/source/dnode/mnode/impl/src/mndVgroup.c @@ -1067,13 +1067,6 @@ static int32_t mndRetrieveVgroups(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *p return code; } - pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - code = colDataSetVal(pColInfo, numOfRows, (const char *)&pVgroup->vnodeGid[i].syncAppliedIndex, false); - if (code != 0) { - mError("vgId:%d, failed to set role, since %s", pVgroup->vgId, tstrerror(code)); - return code; - } - bool exist = false; bool online = false; SDnodeObj *pDnode = mndAcquireDnode(pMnode, pVgroup->vnodeGid[i].dnodeId); @@ -1131,6 +1124,19 @@ static int32_t mndRetrieveVgroups(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *p mError("vgId:%d, failed to set role, since %s", pVgroup->vgId, tstrerror(code)); return code; } + + char applyStr[TSDB_SYNC_APPLY_COMMIT_LEN] = {0}; + char buf[TSDB_SYNC_APPLY_COMMIT_LEN] = {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 { colDataSetNULL(pColInfo, numOfRows); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); @@ -1348,7 +1354,7 @@ static int32_t mndRetrieveVnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB int64_t unappliedCount = pGid->syncCommitIndex - pGid->syncAppliedIndex; pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); char restoreStr[20] = {0}; - if (!pGid->syncRestore) { + if (unappliedCount > 0) { calculateRstoreFinishTime(pGid->appliedRate, unappliedCount, restoreStr, sizeof(restoreStr)); } STR_TO_VARSTR(buf, restoreStr); From b38ac6abbf004395de0577452f3cc2d6e26dca0c Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Wed, 12 Feb 2025 15:32:47 +0800 Subject: [PATCH 05/13] Fix ci problems. --- tests/army/frame/clusterCommonCheck.py | 4 ++-- tests/system-test/3-enterprise/restore/restoreBasic.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/army/frame/clusterCommonCheck.py b/tests/army/frame/clusterCommonCheck.py index 9cbac776b9..02e97612b0 100644 --- a/tests/army/frame/clusterCommonCheck.py +++ b/tests/army/frame/clusterCommonCheck.py @@ -291,9 +291,9 @@ class ClusterComCheck: return True 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_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}';") diff --git a/tests/system-test/3-enterprise/restore/restoreBasic.py b/tests/system-test/3-enterprise/restore/restoreBasic.py index 74cf572018..9ca48ed7e8 100644 --- a/tests/system-test/3-enterprise/restore/restoreBasic.py +++ b/tests/system-test/3-enterprise/restore/restoreBasic.py @@ -80,7 +80,7 @@ class RestoreBasic: for i in range(8): leader = False for j in range(3): - status = tdSql.getData(i, 4 + j*2) + status = tdSql.getData(i, 4 + j*3) if status == "leader": leader = True elif status == "follower": From d1ef88eba431b0a008915ffa7d879a2e9813bee0 Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Wed, 12 Feb 2025 18:29:07 +0800 Subject: [PATCH 06/13] Fix ci problems. --- tests/army/cluster/arbitrator.py | 6 +++--- tests/army/frame/clusterCommonCheck.py | 12 ++++++++++++ tests/system-test/6-cluster/clusterCommonCheck.py | 4 ++-- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/tests/army/cluster/arbitrator.py b/tests/army/cluster/arbitrator.py index 385358e5cc..25f955e7d1 100644 --- a/tests/army/cluster/arbitrator.py +++ b/tests/army/cluster/arbitrator.py @@ -57,11 +57,11 @@ class TDTestCase(TBase): 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") 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") sc.dnodeStop(3) @@ -70,7 +70,7 @@ class TDTestCase(TBase): while count < 100: 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 tdLog.info("wait 1 seconds for set assigned") diff --git a/tests/army/frame/clusterCommonCheck.py b/tests/army/frame/clusterCommonCheck.py index 02e97612b0..75b82d2101 100644 --- a/tests/army/frame/clusterCommonCheck.py +++ b/tests/army/frame/clusterCommonCheck.py @@ -301,6 +301,18 @@ class ClusterComCheck: 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") 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: tdLog.debug(tdSql.res) tdLog.notice(f"elections of {db_name} all vgroups with replica {self.db_replica} are failed in {count} s ") diff --git a/tests/system-test/6-cluster/clusterCommonCheck.py b/tests/system-test/6-cluster/clusterCommonCheck.py index f3e2b5d5bc..c42e3d918d 100644 --- a/tests/system-test/6-cluster/clusterCommonCheck.py +++ b/tests/system-test/6-cluster/clusterCommonCheck.py @@ -251,9 +251,9 @@ class ClusterComCheck: return True 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_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}';") From 540f8dc95d1431f1014e6862acd6deb19e66efee Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Thu, 13 Feb 2025 10:06:47 +0800 Subject: [PATCH 07/13] Fix ci problems. --- tests/script/tsim/dnode/balance3.sim | 8 +- .../drop_dnode_has_multi_vnode_replica3.sim | 32 ++-- .../dnode/drop_dnode_has_vnode_replica3.sim | 8 +- ...distribute_vgroup_replica3_v1_follower.sim | 4 +- ...redistribute_vgroup_replica3_v1_leader.sim | 4 +- tests/script/tsim/sync/3Replica1VgElect.sim | 36 ++-- tests/script/tsim/sync/3Replica5VgElect.sim | 180 +++++++++--------- .../tsim/sync/vnodesnapshot-rsma-test.sim | 12 +- tests/script/tsim/vnode/replica3_basic.sim | 24 +-- tests/script/tsim/vnode/replica3_import.sim | 20 +- tests/script/tsim/vnode/replica3_vgroup.sim | 8 +- .../0-others/information_schema.py | 2 +- tests/system-test/1-insert/alter_replica.py | 4 +- .../4dnode1mnode_basic_replica3_vgroups.py | 6 +- 14 files changed, 173 insertions(+), 175 deletions(-) diff --git a/tests/script/tsim/dnode/balance3.sim b/tests/script/tsim/dnode/balance3.sim index d0235e096e..f2363fb0f3 100644 --- a/tests/script/tsim/dnode/balance3.sim +++ b/tests/script/tsim/dnode/balance3.sim @@ -70,10 +70,10 @@ endi if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -98,10 +98,10 @@ endi if $data(3)[4] == leader then $leaderExist = 1 endi -if $data(3)[6] == leader then +if $data(3)[7] == leader then $leaderExist = 1 endi -if $data(3)[8] == leader then +if $data(3)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then diff --git a/tests/script/tsim/dnode/drop_dnode_has_multi_vnode_replica3.sim b/tests/script/tsim/dnode/drop_dnode_has_multi_vnode_replica3.sim index ef5001dcee..4425865bba 100644 --- a/tests/script/tsim/dnode/drop_dnode_has_multi_vnode_replica3.sim +++ b/tests/script/tsim/dnode/drop_dnode_has_multi_vnode_replica3.sim @@ -70,10 +70,10 @@ endi if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -100,10 +100,10 @@ endi if $data(3)[4] == leader then $leaderExist = 1 endi -if $data(3)[6] == leader then +if $data(3)[7] == leader then $leaderExist = 1 endi -if $data(3)[8] == leader then +if $data(3)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -130,10 +130,10 @@ endi if $data(4)[4] == leader then $leaderExist = 1 endi -if $data(4)[6] == leader then +if $data(4)[7] == leader then $leaderExist = 1 endi -if $data(4)[8] == leader then +if $data(4)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -160,10 +160,10 @@ endi if $data(4)[4] == leader then $leaderExist = 1 endi -if $data(4)[6] == leader then +if $data(4)[7] == leader then $leaderExist = 1 endi -if $data(4)[8] == leader then +if $data(4)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -256,10 +256,10 @@ endi if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -286,10 +286,10 @@ endi if $data(3)[4] == leader then $leaderExist = 1 endi -if $data(3)[6] == leader then +if $data(3)[7] == leader then $leaderExist = 1 endi -if $data(3)[8] == leader then +if $data(3)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -316,10 +316,10 @@ endi if $data(4)[4] == leader then $leaderExist = 1 endi -if $data(4)[6] == leader then +if $data(4)[7] == leader then $leaderExist = 1 endi -if $data(4)[8] == leader then +if $data(4)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -346,10 +346,10 @@ endi if $data(4)[4] == leader then $leaderExist = 1 endi -if $data(4)[6] == leader then +if $data(4)[7] == leader then $leaderExist = 1 endi -if $data(4)[8] == leader then +if $data(4)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then diff --git a/tests/script/tsim/dnode/drop_dnode_has_vnode_replica3.sim b/tests/script/tsim/dnode/drop_dnode_has_vnode_replica3.sim index 2510692846..fd99fc10ea 100644 --- a/tests/script/tsim/dnode/drop_dnode_has_vnode_replica3.sim +++ b/tests/script/tsim/dnode/drop_dnode_has_vnode_replica3.sim @@ -73,13 +73,13 @@ if $data(2)[4] == leader then $follower1 = 3 $follower2 = 4 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 $leaderVnode = 3 $follower1 = 2 $follower2 = 4 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 $leaderVnode = 4 $follower1 = 2 @@ -199,10 +199,10 @@ endi if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then diff --git a/tests/script/tsim/dnode/redistribute_vgroup_replica3_v1_follower.sim b/tests/script/tsim/dnode/redistribute_vgroup_replica3_v1_follower.sim index a576969697..ff34a8884e 100644 --- a/tests/script/tsim/dnode/redistribute_vgroup_replica3_v1_follower.sim +++ b/tests/script/tsim/dnode/redistribute_vgroup_replica3_v1_follower.sim @@ -137,13 +137,13 @@ if $data(2)[4] == leader then $follower1 = 3 $follower2 = 4 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 $leaderVnode = 3 $follower1 = 2 $follower2 = 4 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 $leaderVnode = 4 $follower1 = 2 diff --git a/tests/script/tsim/dnode/redistribute_vgroup_replica3_v1_leader.sim b/tests/script/tsim/dnode/redistribute_vgroup_replica3_v1_leader.sim index 739e3f2984..c6ee0dfeea 100644 --- a/tests/script/tsim/dnode/redistribute_vgroup_replica3_v1_leader.sim +++ b/tests/script/tsim/dnode/redistribute_vgroup_replica3_v1_leader.sim @@ -116,13 +116,13 @@ if $data(2)[4] == leader then $follower1 = 3 $follower2 = 4 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 $leaderVnode = 3 $follower1 = 2 $follower2 = 4 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 $leaderVnode = 4 $follower1 = 2 diff --git a/tests/script/tsim/sync/3Replica1VgElect.sim b/tests/script/tsim/sync/3Replica1VgElect.sim index aae1b25636..6ebee885a8 100644 --- a/tests/script/tsim/sync/3Replica1VgElect.sim +++ b/tests/script/tsim/sync/3Replica1VgElect.sim @@ -89,20 +89,20 @@ if $rows != $vgroups then endi if $data[0][4] == leader then - if $data[0][6] == follower then - if $data[0][8] == follower then + if $data[0][7] == follower then + if $data[0][10] == follower then print ---- vgroup $data[0][0] leader locate on dnode $data[0][3] endi endi elif $data[0][6] == leader then - if $data[0][4] == follower then - if $data[0][8] == follower then + if $data[0][7] == follower then + if $data[0][10] == follower then print ---- vgroup $data[0][0] leader locate on dnode $data[0][5] endi endi -elif $data[0][8] == leader then +elif $data[0][10] == leader 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] endi endi @@ -225,20 +225,20 @@ if $rows != $vgroups then endi if $data[0][4] == leader then - if $data[0][6] == follower then - if $data[0][8] == follower then + if $data[0][7] == follower then + if $data[0][10] == follower then print ---- vgroup $data[0][0] leader locate on dnode $data[0][3] endi endi -elif $data[0][6] == leader then +elif $data[0][7] == leader 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] endi endi -elif $data[0][8] == leader then +elif $data[0][10] == leader 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] endi endi @@ -437,20 +437,20 @@ if $rows != $vgroups then endi if $data[0][4] == leader then - if $data[0][6] == follower then - if $data[0][8] == follower then + if $data[0][7] == follower then + if $data[0][10] == follower then print ---- vgroup $data[0][0] leader locate on dnode $data[0][3] endi endi -elif $data[0][6] == leader then +elif $data[0][7] == leader 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] endi endi -elif $data[0][8] == leader then +elif $data[0][10] == leader 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] endi endi diff --git a/tests/script/tsim/sync/3Replica5VgElect.sim b/tests/script/tsim/sync/3Replica5VgElect.sim index 37e4199e23..01bd41af42 100644 --- a/tests/script/tsim/sync/3Replica5VgElect.sim +++ b/tests/script/tsim/sync/3Replica5VgElect.sim @@ -92,20 +92,20 @@ if $rows != $vgroups then endi if $data[0][4] == leader then - if $data[0][6] == follower then - if $data[0][8] == follower then + if $data[0][7] == follower then + if $data[0][10] == follower then print ---- vgroup $data[0][0] leader locate on dnode $data[0][3] endi endi -elif $data[0][6] == leader then +elif $data[0][7] == leader 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] endi endi -elif $data[0][8] == leader then +elif $data[0][10] == leader 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] endi endi @@ -114,20 +114,20 @@ else endi if $data[1][4] == leader then - if $data[1][6] == follower then - if $data[1][8] == follower then + if $data[1][7] == follower then + if $data[1][10] == follower then print ---- vgroup $data[1][0] leader locate on dnode $data[1][3] endi endi -elif $data[1][6] == leader then +elif $data[1][7] == leader 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] endi endi -elif $data[1][8] == leader then +elif $data[1][10] == leader 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] endi endi @@ -136,20 +136,20 @@ else endi if $data[2][4] == leader then - if $data[2][6] == follower then - if $data[2][8] == follower then + if $data[2][7] == follower then + if $data[2][10] == follower then print ---- vgroup $data[2][0] leader locate on dnode $data[2][3] endi endi -elif $data[2][6] == leader then +elif $data[2][7] == leader 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] endi endi -elif $data[2][8] == leader then +elif $data[2][10] == leader 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] endi endi @@ -158,20 +158,20 @@ else endi if $data[3][4] == leader then - if $data[3][6] == follower then - if $data[3][8] == follower then + if $data[3][7] == follower then + if $data[3][10] == follower then print ---- vgroup $data[3][0] leader locate on dnode $data[3][3] endi endi -elif $data[3][6] == leader then +elif $data[3][7] == leader 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] endi endi -elif $data[3][8] == leader then +elif $data[3][10] == leader 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] endi endi @@ -180,20 +180,20 @@ else endi if $data[4][4] == leader then - if $data[4][6] == follower then - if $data[4][8] == follower then + if $data[4][7] == follower then + if $data[4][10] == follower then print ---- vgroup $data[4][0] leader locate on dnode $data[4][3] endi endi -elif $data[4][6] == leader then +elif $data[4][7] == leader 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] endi endi -elif $data[4][8] == leader then +elif $data[4][10] == leader 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] endi endi @@ -305,20 +305,20 @@ if $rows != $vgroups then endi if $data[0][4] == leader then - if $data[0][6] == follower then - if $data[0][8] == follower then + if $data[0][7] == follower then + if $data[0][10] == follower then print ---- vgroup $data[0][0] leader locate on dnode $data[0][3] endi endi -elif $data[0][6] == leader then +elif $data[0][7] == leader 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] endi endi -elif $data[0][8] == leader then +elif $data[0][10] == leader 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] endi endi @@ -327,20 +327,20 @@ else endi if $data[1][4] == leader then - if $data[1][6] == follower then - if $data[1][8] == follower then + if $data[1][7] == follower then + if $data[1][10] == follower then print ---- vgroup $data[1][0] leader locate on dnode $data[1][3] endi endi -elif $data[1][6] == leader then +elif $data[1][7] == leader 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] endi endi -elif $data[1][8] == leader then +elif $data[1][10] == leader 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] endi endi @@ -349,20 +349,20 @@ else endi if $data[2][4] == leader then - if $data[2][6] == follower then - if $data[2][8] == follower then + if $data[2][7] == follower then + if $data[2][10] == follower then print ---- vgroup $data[2][0] leader locate on dnode $data[2][3] endi endi -elif $data[2][6] == leader then +elif $data[2][7] == leader 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] endi endi -elif $data[2][8] == leader then +elif $data[2][10] == leader 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] endi endi @@ -371,20 +371,20 @@ else endi if $data[3][4] == leader then - if $data[3][6] == follower then - if $data[3][8] == follower then + if $data[3][7] == follower then + if $data[3][10] == follower then print ---- vgroup $data[3][0] leader locate on dnode $data[3][3] endi endi -elif $data[3][6] == leader then +elif $data[3][7] == leader 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] endi endi -elif $data[3][8] == leader then +elif $data[3][10] == leader 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] endi endi @@ -393,20 +393,20 @@ else endi if $data[4][4] == leader then - if $data[4][6] == follower then - if $data[4][8] == follower then + if $data[4][7] == follower then + if $data[4][10] == follower then print ---- vgroup $data[4][0] leader locate on dnode $data[4][3] endi endi -elif $data[4][6] == leader then +elif $data[4][7] == leader 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] endi endi -elif $data[4][8] == leader then +elif $data[4][10] == leader 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] endi endi @@ -607,20 +607,20 @@ if $rows != $vgroups then endi if $data[0][4] == leader then - if $data[0][6] == follower then - if $data[0][8] == follower then + if $data[0][7] == follower then + if $data[0][10] == follower then print ---- vgroup $data[0][0] leader locate on dnode $data[0][3] endi endi -elif $data[0][6] == leader then +elif $data[0][7] == leader 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] endi endi -elif $data[0][8] == leader then +elif $data[0][10] == leader 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] endi endi @@ -629,20 +629,20 @@ else endi if $data[1][4] == leader then - if $data[1][6] == follower then - if $data[1][8] == follower then + if $data[1][7] == follower then + if $data[1][10] == follower then print ---- vgroup $data[1][0] leader locate on dnode $data[1][3] endi endi -elif $data[1][6] == leader then +elif $data[1][7] == leader 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] endi endi -elif $data[1][8] == leader then +elif $data[1][10] == leader 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] endi endi @@ -651,20 +651,20 @@ else endi if $data[2][4] == leader then - if $data[2][6] == follower then - if $data[2][8] == follower then + if $data[2][7] == follower then + if $data[2][10] == follower then print ---- vgroup $data[2][0] leader locate on dnode $data[2][3] endi endi -elif $data[2][6] == leader then +elif $data[2][7] == leader 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] endi endi -elif $data[2][8] == leader then +elif $data[2][10] == leader 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] endi endi @@ -673,20 +673,20 @@ else endi if $data[3][4] == leader then - if $data[3][6] == follower then - if $data[3][8] == follower then + if $data[3][7] == follower then + if $data[3][10] == follower then print ---- vgroup $data[3][0] leader locate on dnode $data[3][3] endi endi -elif $data[3][6] == leader then +elif $data[3][7] == leader 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] endi endi -elif $data[3][8] == leader then +elif $data[3][10] == leader 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] endi endi @@ -695,20 +695,20 @@ else endi if $data[4][4] == leader then - if $data[4][6] == follower then - if $data[4][8] == follower then + if $data[4][7] == follower then + if $data[4][10] == follower then print ---- vgroup $data[4][0] leader locate on dnode $data[4][3] endi endi -elif $data[4][6] == leader then +elif $data[4][7] == leader 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] endi endi -elif $data[4][8] == leader then +elif $data[4][10] == leader 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] endi endi diff --git a/tests/script/tsim/sync/vnodesnapshot-rsma-test.sim b/tests/script/tsim/sync/vnodesnapshot-rsma-test.sim index 8b1720d213..d07c66bc53 100644 --- a/tests/script/tsim/sync/vnodesnapshot-rsma-test.sim +++ b/tests/script/tsim/sync/vnodesnapshot-rsma-test.sim @@ -90,20 +90,20 @@ if $rows != $vgroups then endi if $data[0][4] == leader then - if $data[0][6] == follower then - if $data[0][8] == follower then + if $data[0][7] == follower then + if $data[0][10] == follower then print ---- vgroup $data[0][0] leader locate on dnode $data[0][3] endi endi -elif $data[0][6] == leader then +elif $data[0][7] == leader 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] endi endi -elif $data[0][8] == leader then +elif $data[0][10] == leader 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] endi endi diff --git a/tests/script/tsim/vnode/replica3_basic.sim b/tests/script/tsim/vnode/replica3_basic.sim index 473e53e84b..45db0df0d2 100644 --- a/tests/script/tsim/vnode/replica3_basic.sim +++ b/tests/script/tsim/vnode/replica3_basic.sim @@ -96,10 +96,10 @@ $leaderExist = 0 if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -180,10 +180,10 @@ $leaderExist = 0 if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -220,10 +220,10 @@ $leaderExist = 0 if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -260,10 +260,10 @@ $leaderExist = 0 if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -300,10 +300,10 @@ $leaderExist = 0 if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -340,10 +340,10 @@ $leaderExist = 0 if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then diff --git a/tests/script/tsim/vnode/replica3_import.sim b/tests/script/tsim/vnode/replica3_import.sim index 99608c72e2..2840fd45a1 100644 --- a/tests/script/tsim/vnode/replica3_import.sim +++ b/tests/script/tsim/vnode/replica3_import.sim @@ -71,10 +71,10 @@ endi if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -157,10 +157,10 @@ $leaderExist = 0 if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -227,10 +227,10 @@ $leaderExist = 0 if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -275,10 +275,10 @@ $leaderExist = 0 if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -313,10 +313,10 @@ $leaderExist = 0 if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then diff --git a/tests/script/tsim/vnode/replica3_vgroup.sim b/tests/script/tsim/vnode/replica3_vgroup.sim index 6643966344..a7a8b725b9 100644 --- a/tests/script/tsim/vnode/replica3_vgroup.sim +++ b/tests/script/tsim/vnode/replica3_vgroup.sim @@ -70,10 +70,10 @@ $leaderExist = 0 if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -83,10 +83,10 @@ $leaderExist = 0 if $data(3)[4] == leader then $leaderExist = 1 endi -if $data(3)[6] == leader then +if $data(3)[7] == leader then $leaderExist = 1 endi -if $data(3)[8] == leader then +if $data(3)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then diff --git a/tests/system-test/0-others/information_schema.py b/tests/system-test/0-others/information_schema.py index 390bf3d9dd..012f5d6eec 100644 --- a/tests/system-test/0-others/information_schema.py +++ b/tests/system-test/0-others/information_schema.py @@ -222,7 +222,7 @@ class TDTestCase: tdSql.query("select * from information_schema.ins_columns where db_name ='information_schema'") tdLog.info(len(tdSql.queryResult)) - tdSql.checkEqual(True, len(tdSql.queryResult) in range(312, 313)) + tdSql.checkEqual(True, len(tdSql.queryResult) in range(318, 319)) tdSql.query("select * from information_schema.ins_columns where db_name ='performance_schema'") tdSql.checkEqual(61, len(tdSql.queryResult)) diff --git a/tests/system-test/1-insert/alter_replica.py b/tests/system-test/1-insert/alter_replica.py index 900b64d943..6d364618ee 100644 --- a/tests/system-test/1-insert/alter_replica.py +++ b/tests/system-test/1-insert/alter_replica.py @@ -27,8 +27,8 @@ class TDTestCase: flag = 0 for vgid in range (vgNum) : v1_status = tdSql.queryResult[vgid][4] - v2_status = tdSql.queryResult[vgid][6] - v3_status = tdSql.queryResult[vgid][8] + v2_status = tdSql.queryResult[vgid][7] + v3_status = tdSql.queryResult[vgid][10] 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 ((v3_status == 'leader') and (v2_status == 'follower') and (v1_status == 'follower')): diff --git a/tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_vgroups.py b/tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_vgroups.py index 4f3b2e2def..5f2a54739c 100644 --- a/tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_vgroups.py +++ b/tests/system-test/6-cluster/vnode/4dnode1mnode_basic_replica3_vgroups.py @@ -135,11 +135,9 @@ class TDTestCase: vgroup_id = vgroup_info[0] vgroup_status = [] for ind , role in enumerate(vgroup_info[3:-4]): - - if ind%2==0: - continue - else: + if role in ['leader', 'leader*', 'leader**', 'follower']: vgroup_status.append(role) + if vgroup_status.count("leader")!=1 or vgroup_status.count("follower")!=2: status = False return status From 0cd153aa887430c67d8cec3ee54b2e8a835ee50b Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Thu, 13 Feb 2025 14:10:24 +0800 Subject: [PATCH 08/13] Fix ci problems. --- .../tsim/dnode/drop_dnode_has_vnode_replica3.sim | 4 ++-- .../dnode/redistribute_vgroup_replica3_v2.sim | 4 ++-- tests/script/tsim/vnode/replica3_many.sim | 16 ++++++++-------- tests/script/tsim/vnode/replica3_repeat.sim | 4 ++-- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/tests/script/tsim/dnode/drop_dnode_has_vnode_replica3.sim b/tests/script/tsim/dnode/drop_dnode_has_vnode_replica3.sim index fd99fc10ea..9c6abe536b 100644 --- a/tests/script/tsim/dnode/drop_dnode_has_vnode_replica3.sim +++ b/tests/script/tsim/dnode/drop_dnode_has_vnode_replica3.sim @@ -109,10 +109,10 @@ endi if $data(2)[3] != 2 then return -1 endi -if $data(2)[5] != 3 then +if $data(2)[6] != 3 then return -1 endi -if $data(2)[7] != 4 then +if $data(2)[9] != 4 then return -1 endi diff --git a/tests/script/tsim/dnode/redistribute_vgroup_replica3_v2.sim b/tests/script/tsim/dnode/redistribute_vgroup_replica3_v2.sim index 652f0c14b4..ae0b60c943 100644 --- a/tests/script/tsim/dnode/redistribute_vgroup_replica3_v2.sim +++ b/tests/script/tsim/dnode/redistribute_vgroup_replica3_v2.sim @@ -122,13 +122,13 @@ if $data(2)[4] == leader then $follower1 = 3 $follower2 = 4 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 $leaderVnode = 3 $follower1 = 2 $follower2 = 4 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 $leaderVnode = 4 $follower1 = 2 diff --git a/tests/script/tsim/vnode/replica3_many.sim b/tests/script/tsim/vnode/replica3_many.sim index e3c73b2018..930eebc688 100644 --- a/tests/script/tsim/vnode/replica3_many.sim +++ b/tests/script/tsim/vnode/replica3_many.sim @@ -68,10 +68,10 @@ endi if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -96,10 +96,10 @@ endi if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -121,10 +121,10 @@ $leaderExist = 0 if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -146,10 +146,10 @@ $leaderExist = 0 if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then diff --git a/tests/script/tsim/vnode/replica3_repeat.sim b/tests/script/tsim/vnode/replica3_repeat.sim index 10e18d01d0..defee0fe0a 100644 --- a/tests/script/tsim/vnode/replica3_repeat.sim +++ b/tests/script/tsim/vnode/replica3_repeat.sim @@ -62,10 +62,10 @@ endi if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then From f09dd39f8999ce64ecbdea0baadd753f252f70b2 Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Thu, 13 Feb 2025 18:24:14 +0800 Subject: [PATCH 09/13] Fix ci problems. --- tests/script/tsim/dnode/balance_replica3.sim | 28 ++++++++++---------- tests/script/tsim/vnode/replica3_basic.sim | 4 +-- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/tests/script/tsim/dnode/balance_replica3.sim b/tests/script/tsim/dnode/balance_replica3.sim index afd7603b16..37b4a6beca 100644 --- a/tests/script/tsim/dnode/balance_replica3.sim +++ b/tests/script/tsim/dnode/balance_replica3.sim @@ -75,10 +75,10 @@ endi if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -105,10 +105,10 @@ endi if $data(3)[4] == leader then $leaderExist = 1 endi -if $data(3)[6] == leader then +if $data(3)[7] == leader then $leaderExist = 1 endi -if $data(3)[8] == leader then +if $data(3)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -135,10 +135,10 @@ endi if $data(4)[4] == leader then $leaderExist = 1 endi -if $data(4)[6] == leader then +if $data(4)[7] == leader then $leaderExist = 1 endi -if $data(4)[8] == leader then +if $data(4)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -165,10 +165,10 @@ endi if $data(4)[4] == leader then $leaderExist = 1 endi -if $data(4)[6] == leader then +if $data(4)[7] == leader then $leaderExist = 1 endi -if $data(4)[8] == leader then +if $data(4)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -247,10 +247,10 @@ endi if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -307,10 +307,10 @@ endi if $data(4)[4] == leader then $leaderExist = 1 endi -if $data(4)[6] == leader then +if $data(4)[7] == leader then $leaderExist = 1 endi -if $data(4)[8] == leader then +if $data(4)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then @@ -337,10 +337,10 @@ endi if $data(4)[4] == leader then $leaderExist = 1 endi -if $data(4)[6] == leader then +if $data(4)[7] == leader then $leaderExist = 1 endi -if $data(4)[8] == leader then +if $data(4)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then diff --git a/tests/script/tsim/vnode/replica3_basic.sim b/tests/script/tsim/vnode/replica3_basic.sim index 45db0df0d2..5da9fe6b38 100644 --- a/tests/script/tsim/vnode/replica3_basic.sim +++ b/tests/script/tsim/vnode/replica3_basic.sim @@ -141,10 +141,10 @@ $leaderExist = 0 if $data(2)[4] == leader then $leaderExist = 1 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 endi if $leaderExist != 1 then From 43fffd644bc768f5636bcfa08f3443c6ee2e05f0 Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Mon, 17 Feb 2025 14:42:20 +0800 Subject: [PATCH 10/13] resolve compatibility issues --- source/common/src/msg/tmsg.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/source/common/src/msg/tmsg.c b/source/common/src/msg/tmsg.c index 5d4c5b5cc4..609e60e3e6 100644 --- a/source/common/src/msg/tmsg.c +++ b/source/common/src/msg/tmsg.c @@ -1473,6 +1473,12 @@ int32_t tSerializeSStatusReq(void *buf, int32_t bufLen, SStatusReq *pReq) { TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->analVer)); 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); _exit: @@ -1544,8 +1550,6 @@ int32_t tDeserializeSStatusReq(void *buf, int32_t bufLen, SStatusReq *pReq) { TAOS_CHECK_EXIT(tDecodeI32(&decoder, &vload.learnerProgress)); TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.roleTimeMs)); TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.startTimeMs)); - TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.syncAppliedIndex)); - TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.syncCommitIndex)); if (taosArrayPush(pReq->pVloads, &vload) == NULL) { TAOS_CHECK_EXIT(terrno); } @@ -1604,6 +1608,14 @@ int32_t tDeserializeSStatusReq(void *buf, int32_t bufLen, SStatusReq *pReq) { 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); _exit: From d071f403288daaf51f28ed07ebcb32dea7572b46 Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Tue, 18 Feb 2025 09:31:15 +0800 Subject: [PATCH 11/13] Fix review errors. --- include/util/tdef.h | 2 +- source/common/src/msg/tmsg.c | 2 -- source/dnode/mnode/impl/src/mndVgroup.c | 6 +++--- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/include/util/tdef.h b/include/util/tdef.h index ee3284991f..36ef36260d 100644 --- a/include/util/tdef.h +++ b/include/util/tdef.h @@ -364,7 +364,7 @@ typedef enum ELogicConditionType { #define TSDB_MAX_REPLICA 5 #define TSDB_MAX_LEARNER_REPLICA 10 #define TSDB_SYNC_RESTORE_lEN 20 -#define TSDB_SYNC_APPLY_COMMIT_LEN 27 +#define TSDB_SYNC_APPLY_COMMIT_LEN 41 #define TSDB_SYNC_LOG_BUFFER_SIZE 4096 #define TSDB_SYNC_LOG_BUFFER_RETENTION 256 #define TSDB_SYNC_LOG_BUFFER_THRESHOLD (1024 * 1024 * 5) diff --git a/source/common/src/msg/tmsg.c b/source/common/src/msg/tmsg.c index 609e60e3e6..edaf7fa2c1 100644 --- a/source/common/src/msg/tmsg.c +++ b/source/common/src/msg/tmsg.c @@ -1432,8 +1432,6 @@ int32_t tSerializeSStatusReq(void *buf, int32_t bufLen, SStatusReq *pReq) { TAOS_CHECK_EXIT(tEncodeI32(&encoder, pload->learnerProgress)); TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->roleTimeMs)); TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->startTimeMs)); - TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->syncAppliedIndex)); - TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->syncCommitIndex)); } // mnode loads diff --git a/source/dnode/mnode/impl/src/mndVgroup.c b/source/dnode/mnode/impl/src/mndVgroup.c index ca48b23e6f..311beb0daa 100644 --- a/source/dnode/mnode/impl/src/mndVgroup.c +++ b/source/dnode/mnode/impl/src/mndVgroup.c @@ -1125,8 +1125,8 @@ static int32_t mndRetrieveVgroups(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *p return code; } - char applyStr[TSDB_SYNC_APPLY_COMMIT_LEN] = {0}; - char buf[TSDB_SYNC_APPLY_COMMIT_LEN] = {0}; + 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); @@ -1358,7 +1358,7 @@ static int32_t mndRetrieveVnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB calculateRstoreFinishTime(pGid->appliedRate, unappliedCount, restoreStr, sizeof(restoreStr)); } STR_TO_VARSTR(buf, restoreStr); - colDataSetVal(pColInfo, numOfRows, (const char *)&buf, false); + 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; From 25a1af2b883c3d8f72e6357d5d3f4d1cd4d423e8 Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Tue, 18 Feb 2025 12:28:07 +0800 Subject: [PATCH 12/13] Fix ci problems. --- tests/script/tsim/dnode/redistribute_vgroup_replica3_v3.sim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/script/tsim/dnode/redistribute_vgroup_replica3_v3.sim b/tests/script/tsim/dnode/redistribute_vgroup_replica3_v3.sim index 30e644f170..b3746dfcf4 100644 --- a/tests/script/tsim/dnode/redistribute_vgroup_replica3_v3.sim +++ b/tests/script/tsim/dnode/redistribute_vgroup_replica3_v3.sim @@ -136,13 +136,13 @@ if $data(2)[4] == leader then $follower1 = 3 $follower2 = 4 endi -if $data(2)[6] == leader then +if $data(2)[7] == leader then $leaderExist = 1 $leaderVnode = 3 $follower1 = 2 $follower2 = 4 endi -if $data(2)[8] == leader then +if $data(2)[10] == leader then $leaderExist = 1 $leaderVnode = 4 $follower1 = 2 From b4927ca10a7a17643d4bb5d630110c7f1dcfaf15 Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Tue, 18 Feb 2025 15:06:38 +0800 Subject: [PATCH 13/13] Fix some review errors. --- source/common/src/systable.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/common/src/systable.c b/source/common/src/systable.c index 44ae0b2faf..cb7672a3b8 100644 --- a/source/common/src/systable.c +++ b/source/common/src/systable.c @@ -292,16 +292,16 @@ static const SSysDbTableSchema vgroupsSchema[] = { {.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_status", .bytes = 9 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, - {.name = "v1_applied/committed", .bytes = TSDB_SYNC_APPLY_COMMIT_LEN, .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_status", .bytes = 9 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, - {.name = "v2_applied/committed", .bytes = TSDB_SYNC_APPLY_COMMIT_LEN, .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_status", .bytes = 9 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, - {.name = "v3_applied/committed", .bytes = TSDB_SYNC_APPLY_COMMIT_LEN, .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_status", .bytes = 9 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, - {.name = "v4_applied/committed", .bytes = TSDB_SYNC_APPLY_COMMIT_LEN, .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 = "cacheelements", .bytes = 4, .type = TSDB_DATA_TYPE_INT, .sysInfo = true}, {.name = "tsma", .bytes = 1, .type = TSDB_DATA_TYPE_TINYINT, .sysInfo = true},