refactor(sync): speed up sync point
This commit is contained in:
parent
0f3e244eb2
commit
7ce5fb11b0
|
@ -213,6 +213,11 @@ int32_t syncNodeOnAppendEntriesReplySnapshot2Cb(SSyncNode* ths, SyncAppendEntrie
|
||||||
if (nextIndex > SYNC_INDEX_BEGIN) {
|
if (nextIndex > SYNC_INDEX_BEGIN) {
|
||||||
--nextIndex;
|
--nextIndex;
|
||||||
|
|
||||||
|
// speed up
|
||||||
|
if (nextIndex > pMsg->matchIndex + 1) {
|
||||||
|
nextIndex = pMsg->matchIndex + 1;
|
||||||
|
}
|
||||||
|
|
||||||
bool needStartSnapshot = false;
|
bool needStartSnapshot = false;
|
||||||
if (nextIndex >= SYNC_INDEX_BEGIN && !ths->pLogStore->syncLogExist(ths->pLogStore, nextIndex)) {
|
if (nextIndex >= SYNC_INDEX_BEGIN && !ths->pLogStore->syncLogExist(ths->pLogStore, nextIndex)) {
|
||||||
needStartSnapshot = true;
|
needStartSnapshot = true;
|
||||||
|
|
|
@ -2222,13 +2222,18 @@ SyncTerm syncNodeGetPreTerm(SSyncNode* pSyncNode, SyncIndex index) {
|
||||||
SyncIndex preIndex = index - 1;
|
SyncIndex preIndex = index - 1;
|
||||||
SSyncRaftEntry* pPreEntry = NULL;
|
SSyncRaftEntry* pPreEntry = NULL;
|
||||||
int32_t code = pSyncNode->pLogStore->syncLogGetEntry(pSyncNode->pLogStore, preIndex, &pPreEntry);
|
int32_t code = pSyncNode->pLogStore->syncLogGetEntry(pSyncNode->pLogStore, preIndex, &pPreEntry);
|
||||||
|
|
||||||
|
SSnapshot snapshot = {.data = NULL,
|
||||||
|
.lastApplyIndex = SYNC_INDEX_INVALID,
|
||||||
|
.lastApplyTerm = SYNC_TERM_INVALID,
|
||||||
|
.lastConfigIndex = SYNC_INDEX_INVALID};
|
||||||
|
|
||||||
if (code == 0) {
|
if (code == 0) {
|
||||||
ASSERT(pPreEntry != NULL);
|
ASSERT(pPreEntry != NULL);
|
||||||
preTerm = pPreEntry->term;
|
preTerm = pPreEntry->term;
|
||||||
taosMemoryFree(pPreEntry);
|
taosMemoryFree(pPreEntry);
|
||||||
return preTerm;
|
return preTerm;
|
||||||
} else {
|
} else {
|
||||||
SSnapshot snapshot = {.data = NULL, .lastApplyIndex = -1, .lastApplyTerm = 0, .lastConfigIndex = -1};
|
|
||||||
if (pSyncNode->pFsm->FpGetSnapshotInfo != NULL) {
|
if (pSyncNode->pFsm->FpGetSnapshotInfo != NULL) {
|
||||||
pSyncNode->pFsm->FpGetSnapshotInfo(pSyncNode->pFsm, &snapshot);
|
pSyncNode->pFsm->FpGetSnapshotInfo(pSyncNode->pFsm, &snapshot);
|
||||||
if (snapshot.lastApplyIndex == preIndex) {
|
if (snapshot.lastApplyIndex == preIndex) {
|
||||||
|
@ -2239,7 +2244,8 @@ SyncTerm syncNodeGetPreTerm(SSyncNode* pSyncNode, SyncIndex index) {
|
||||||
|
|
||||||
do {
|
do {
|
||||||
char logBuf[128];
|
char logBuf[128];
|
||||||
snprintf(logBuf, sizeof(logBuf), "sync node get pre term error, index:%" PRId64, index);
|
snprintf(logBuf, sizeof(logBuf), "sync node get pre term error, index:%ld, snap-index:%ld, snap-term:%lu", index,
|
||||||
|
snapshot.lastApplyIndex, snapshot.lastApplyTerm);
|
||||||
syncNodeErrorLog(pSyncNode, logBuf);
|
syncNodeErrorLog(pSyncNode, logBuf);
|
||||||
} while (0);
|
} while (0);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue