fix(sync): snapshot maybe change when sending
This commit is contained in:
parent
44a893a1c1
commit
326714a077
|
@ -50,6 +50,8 @@ typedef struct SSyncSnapshotSender {
|
|||
bool finish;
|
||||
} SSyncSnapshotSender;
|
||||
|
||||
void snapshotSenderDoStart(SSyncSnapshotSender *pSender);
|
||||
|
||||
SSyncSnapshotSender *snapshotSenderCreate(SSyncNode *pSyncNode, int32_t replicaIndex);
|
||||
void snapshotSenderDestroy(SSyncSnapshotSender *pSender);
|
||||
void snapshotSenderStart(SSyncSnapshotSender *pSender);
|
||||
|
|
|
@ -174,18 +174,15 @@ int32_t syncNodeOnAppendEntriesReplySnapshotCb(SSyncNode* ths, SyncAppendEntries
|
|||
}
|
||||
ASSERT(pSender != NULL);
|
||||
|
||||
// calculate sentryIndex
|
||||
SyncIndex sentryIndex;
|
||||
if (pSender->start) {
|
||||
if (pSender->start && pSender->term == ths->pRaftStore->currentTerm) {
|
||||
// already start
|
||||
sentryIndex = pSender->snapshot.lastApplyIndex;
|
||||
|
||||
} else {
|
||||
// start send snapshot
|
||||
if (!(pSender->term == ths->pRaftStore->currentTerm && pSender->finish == true)) {
|
||||
snapshotSenderStart(pSender);
|
||||
} else {
|
||||
sInfo("snapshot send finish, send_term:%lu, current_term:%lu", pSender->term, ths->pRaftStore->currentTerm);
|
||||
}
|
||||
// start send snapshot, first time
|
||||
snapshotSenderDoStart(pSender);
|
||||
pSender->start = true;
|
||||
sentryIndex = pSender->snapshot.lastApplyIndex;
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
#include "syncUtil.h"
|
||||
#include "wal.h"
|
||||
|
||||
static void snapshotSenderDoStart(SSyncSnapshotSender *pSender);
|
||||
// static void snapshotSenderDoStart(SSyncSnapshotSender *pSender);
|
||||
static void snapshotReceiverDoStart(SSyncSnapshotReceiver *pReceiver);
|
||||
|
||||
SSyncSnapshotSender *snapshotSenderCreate(SSyncNode *pSyncNode, int32_t replicaIndex) {
|
||||
|
@ -59,7 +59,7 @@ void snapshotSenderDestroy(SSyncSnapshotSender *pSender) {
|
|||
}
|
||||
|
||||
// begin send snapshot (current term, seq begin)
|
||||
static void snapshotSenderDoStart(SSyncSnapshotSender *pSender) {
|
||||
void snapshotSenderDoStart(SSyncSnapshotSender *pSender) {
|
||||
pSender->term = pSender->pSyncNode->pRaftStore->currentTerm;
|
||||
pSender->seq = SYNC_SNAPSHOT_SEQ_BEGIN;
|
||||
pSender->ack = SYNC_SNAPSHOT_SEQ_INVALID;
|
||||
|
|
Loading…
Reference in New Issue