diff --git a/src/inc/tsync.h b/src/inc/tsync.h index 78958801fe1363ef5b2324c6080e07aaf99db054..2dfac7ec3282bc2f404eeffa4ccc7e85ad6cf78a 100644 --- a/src/inc/tsync.h +++ b/src/inc/tsync.h @@ -26,6 +26,7 @@ extern "C" { typedef enum _TAOS_SYNC_ROLE { TAOS_SYNC_ROLE_OFFLINE, TAOS_SYNC_ROLE_UNSYNCED, + TAOS_SYNC_ROLE_SYNCING, TAOS_SYNC_ROLE_SLAVE, TAOS_SYNC_ROLE_MASTER, } ESyncRole; diff --git a/src/mnode/src/mnodeMnode.c b/src/mnode/src/mnodeMnode.c index d2f389ca0b6afde4dd9e48c05a99c266ebbbca44..2fff885fca9501a2c5c81db3d93bf447a580e088 100644 --- a/src/mnode/src/mnodeMnode.c +++ b/src/mnode/src/mnodeMnode.c @@ -190,18 +190,7 @@ void *mnodeGetNextMnode(void *pIter, SMnodeObj **pMnode) { } char *mnodeGetMnodeRoleStr(int32_t role) { - switch (role) { - case TAOS_SYNC_ROLE_OFFLINE: - return "offline"; - case TAOS_SYNC_ROLE_UNSYNCED: - return "unsynced"; - case TAOS_SYNC_ROLE_SLAVE: - return "slave"; - case TAOS_SYNC_ROLE_MASTER: - return "master"; - default: - return "undefined"; - } + return syncRole[role]; } void mnodeUpdateMnodeEpSet() { diff --git a/src/sync/src/syncMain.c b/src/sync/src/syncMain.c index 04e402769b513a269ac3c5a23d64e92318932bc4..cdbf5ab47d9ad3a686463ddc9b251c61efd639fc 100644 --- a/src/sync/src/syncMain.c +++ b/src/sync/src/syncMain.c @@ -71,6 +71,7 @@ static SSyncPeer *syncAddPeer(SSyncNode *pNode, const SNodeInfo *pInfo); char* syncRole[] = { "offline", "unsynced", + "syncing", "slave", "master" }; diff --git a/src/sync/src/syncRestore.c b/src/sync/src/syncRestore.c index 34afbc4db68624165b939298386ca4333fedf896..07d99b916ef57062cd91b14f0a970d0e80943452 100644 --- a/src/sync/src/syncRestore.c +++ b/src/sync/src/syncRestore.c @@ -300,6 +300,8 @@ void *syncRestoreData(void *param) taosBlockSIGPIPE(); __sync_fetch_and_add(&tsSyncNum, 1); + (*pNode->notifyRole)(pNode->ahandle, TAOS_SYNC_ROLE_SYNCING); + if (syncOpenRecvBuffer(pNode) < 0) { sError("%s, failed to allocate recv buffer", pPeer->id); } else { @@ -307,7 +309,6 @@ void *syncRestoreData(void *param) sInfo("%s, it is synced successfully", pPeer->id); nodeRole = TAOS_SYNC_ROLE_SLAVE; syncBroadcastStatus(pNode); - (*pNode->notifyRole)(pNode->ahandle, nodeRole); } else { sError("%s, failed to restore data, restart connection", pPeer->id); nodeRole = TAOS_SYNC_ROLE_UNSYNCED; @@ -315,6 +316,8 @@ void *syncRestoreData(void *param) } } + (*pNode->notifyRole)(pNode->ahandle, nodeRole); + nodeSStatus = TAOS_SYNC_STATUS_INIT; tclose(pPeer->syncFd) syncCloseRecvBuffer(pNode); diff --git a/src/vnode/src/vnodeMain.c b/src/vnode/src/vnodeMain.c index dd88fdf8a3e4bad901efeb7a47e1ac9b88a70a30..8a56a2c50045dd813caebe33717ab740b76afb9d 100644 --- a/src/vnode/src/vnodeMain.c +++ b/src/vnode/src/vnodeMain.c @@ -419,10 +419,7 @@ static void vnodeBuildVloadMsg(SVnodeObj *pVnode, SDMStatusMsg *pStatus) { if (pVnode->status != TAOS_VN_STATUS_READY) return; if (pStatus->openVnodes >= TSDB_MAX_VNODES) return; - // still need report status when unsynced - if (pVnode->syncCfg.replica > 1 && pVnode->role == TAOS_SYNC_ROLE_UNSYNCED) { - } else if (pVnode->tsdb == NULL) { - } else { + if (pVnode->tsdb) { tsdbReportStat(pVnode->tsdb, &pointsWritten, &totalStorage, &compStorage); }