Skip to content

Conversation

UndefinedSy
Copy link

What type of PR is this?

  • bug
  • feature
  • enhancement

What problem(s) does this PR solve?

Issue(s) number:

5881

Description:

if a leader fails to update its last_log_id_sent (maybe caused be
follower fail or network issue), it will then try to send some
duplicated logs in the next appendLog request.

```
                      commitId_: 99
                          |
                          v
local wal: |-------------------|
req.append_entries:        |----------------|
```

in this case, follower will do rollback even if the logs are the same.

How do you solve it?

add a bool variable to track if the log is inconsistent and only do rollback if the log has a conflict.

Special notes for your reviewer, ex. impact of this fix, design document, etc:

with this fix, followers will not do unnecessary rollback in network issues.
raft rollback is not a lightweight operation, especially if we have a large number of parts, which may may lead to cascade problems.

Checklist:

Tests:

  • Unit test(positive and negative cases)
  • Function test
  • Performance test
  • N/A

Affects:

  • Documentation affected (Please add the label if documentation needs to be modified.)
  • Incompatibility (If it breaks the compatibility, please describe it and add the label.)
  • If it's needed to cherry-pick (If cherry-pick to some branches is required, please label the destination version(s).)
  • Performance impacted: Consumes more CPU/Memory

Release notes:

Please confirm whether to be reflected in release notes and how to describe:

ex. Fixed the bug .....

@UndefinedSy UndefinedSy requested a review from critical27 as a code owner July 5, 2024 02:40
@CLAassistant
Copy link

CLAassistant commented Jul 5, 2024

CLA assistant check
All committers have signed the CLA.

@UndefinedSy UndefinedSy force-pushed the BR_FIX_RAFT_ROLLBACK branch 2 times, most recently from add2dfb to 73a32f7 Compare July 5, 2024 05:49
Copy link
Contributor

@critical27 critical27 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry that we are not working on this repo for a long time... Good job~

if a leader fails to update its last_log_id_sent (maybe caused be
follower fail or network issue), it will then try to send some
duplicated logs in the next appendLog request.

```
                      commitId_: 99
                          |
                          v
local wal: |-------------------|
req.append_entries:        |----------------|
```

in this case, follower will do rollback even if the logs are the same.
@UndefinedSy UndefinedSy force-pushed the BR_FIX_RAFT_ROLLBACK branch from 73a32f7 to 850a69e Compare August 24, 2025 09:31
@UndefinedSy
Copy link
Author

Sorry that we are not working on this repo for a long time... Good job~

The CI workflow doesn't seem to work. Actually, I've some other PRs also failed in the build check.
Will this be fixed or this repo will no longer be maintained. If so, let's just leave it here so that others can find a solution to this problem.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants