refactor(sync): do replicate in timer routine
This commit is contained in:
parent
357951e947
commit
3e6d6fe89b
|
@ -1259,11 +1259,9 @@ void syncNodeStart(SSyncNode* pSyncNode) {
|
||||||
syncNodeBecomeFollower(pSyncNode, "first start");
|
syncNodeBecomeFollower(pSyncNode, "first start");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (syncNodeIsMnode(pSyncNode)) {
|
int32_t ret = 0;
|
||||||
int32_t ret = 0;
|
ret = syncNodeStartPingTimer(pSyncNode);
|
||||||
ret = syncNodeStartPingTimer(pSyncNode);
|
ASSERT(ret == 0);
|
||||||
ASSERT(ret == 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void syncNodeStartStandBy(SSyncNode* pSyncNode) {
|
void syncNodeStartStandBy(SSyncNode* pSyncNode) {
|
||||||
|
@ -1276,11 +1274,9 @@ void syncNodeStartStandBy(SSyncNode* pSyncNode) {
|
||||||
int32_t ret = syncNodeRestartElectTimer(pSyncNode, electMS);
|
int32_t ret = syncNodeRestartElectTimer(pSyncNode, electMS);
|
||||||
ASSERT(ret == 0);
|
ASSERT(ret == 0);
|
||||||
|
|
||||||
if (pSyncNode->vgId == 1) {
|
ret = 0;
|
||||||
int32_t ret = 0;
|
ret = syncNodeStartPingTimer(pSyncNode);
|
||||||
ret = syncNodeStartPingTimer(pSyncNode);
|
ASSERT(ret == 0);
|
||||||
ASSERT(ret == 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void syncNodeClose(SSyncNode* pSyncNode) {
|
void syncNodeClose(SSyncNode* pSyncNode) {
|
||||||
|
|
|
@ -55,7 +55,12 @@ int32_t syncNodeReplicateOne(SSyncNode* pSyncNode, SRaftId* pDestId) {
|
||||||
// maybe start snapshot
|
// maybe start snapshot
|
||||||
SyncIndex logStartIndex = pSyncNode->pLogStore->syncLogBeginIndex(pSyncNode->pLogStore);
|
SyncIndex logStartIndex = pSyncNode->pLogStore->syncLogBeginIndex(pSyncNode->pLogStore);
|
||||||
SyncIndex logEndIndex = pSyncNode->pLogStore->syncLogEndIndex(pSyncNode->pLogStore);
|
SyncIndex logEndIndex = pSyncNode->pLogStore->syncLogEndIndex(pSyncNode->pLogStore);
|
||||||
if (nextIndex < logStartIndex || nextIndex > logEndIndex) {
|
if (nextIndex < logStartIndex || nextIndex - 1 > logEndIndex) {
|
||||||
|
char logBuf[128];
|
||||||
|
snprintf(logBuf, sizeof(logBuf), "start snapshot for next-index:%ld, start:%ld, end:%ld", nextIndex, logStartIndex,
|
||||||
|
logEndIndex);
|
||||||
|
syncNodeEventLog(pSyncNode, logBuf);
|
||||||
|
|
||||||
// start snapshot
|
// start snapshot
|
||||||
int32_t code = syncNodeStartSnapshot(pSyncNode, pDestId);
|
int32_t code = syncNodeStartSnapshot(pSyncNode, pDestId);
|
||||||
ASSERT(code == 0);
|
ASSERT(code == 0);
|
||||||
|
@ -128,12 +133,12 @@ int32_t syncNodeReplicateOne(SSyncNode* pSyncNode, SRaftId* pDestId) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t syncNodeReplicate(SSyncNode* pSyncNode) {
|
int32_t syncNodeReplicate(SSyncNode* pSyncNode) {
|
||||||
syncNodeEventLog(pSyncNode, "do replicate");
|
|
||||||
|
|
||||||
if (pSyncNode->state != TAOS_SYNC_STATE_LEADER) {
|
if (pSyncNode->state != TAOS_SYNC_STATE_LEADER) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
syncNodeEventLog(pSyncNode, "do replicate");
|
||||||
|
|
||||||
int32_t ret = 0;
|
int32_t ret = 0;
|
||||||
for (int i = 0; i < pSyncNode->peersNum; ++i) {
|
for (int i = 0; i < pSyncNode->peersNum; ++i) {
|
||||||
SRaftId* pDestId = &(pSyncNode->peersId[i]);
|
SRaftId* pDestId = &(pSyncNode->peersId[i]);
|
||||||
|
@ -170,7 +175,17 @@ int32_t syncNodeMaybeSendAppendEntries(SSyncNode* pSyncNode, const SRaftId* dest
|
||||||
int32_t ret = 0;
|
int32_t ret = 0;
|
||||||
if (syncNodeNeedSendAppendEntries(pSyncNode, destRaftId, pMsg)) {
|
if (syncNodeNeedSendAppendEntries(pSyncNode, destRaftId, pMsg)) {
|
||||||
ret = syncNodeSendAppendEntries(pSyncNode, destRaftId, pMsg);
|
ret = syncNodeSendAppendEntries(pSyncNode, destRaftId, pMsg);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
char logBuf[128];
|
||||||
|
char host[64];
|
||||||
|
int16_t port;
|
||||||
|
syncUtilU642Addr(destRaftId->addr, host, sizeof(host), &port);
|
||||||
|
|
||||||
|
snprintf(logBuf, sizeof(logBuf), "do not repcate to %s:%d for index:%ld", host, port, pMsg->prevLogIndex + 1);
|
||||||
|
syncNodeEventLog(pSyncNode, logBuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -60,6 +60,9 @@ static void syncNodeCleanConfigIndex(SSyncNode* ths) {
|
||||||
int32_t syncNodeTimerRoutine(SSyncNode* ths) {
|
int32_t syncNodeTimerRoutine(SSyncNode* ths) {
|
||||||
syncNodeEventLog(ths, "timer routines");
|
syncNodeEventLog(ths, "timer routines");
|
||||||
|
|
||||||
|
// timer replicate
|
||||||
|
syncNodeReplicate(ths);
|
||||||
|
|
||||||
if (syncNodeIsMnode(ths)) {
|
if (syncNodeIsMnode(ths)) {
|
||||||
syncNodeCleanConfigIndex(ths);
|
syncNodeCleanConfigIndex(ths);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue