Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix. raft follower will rollback itself when it misses a certain log #5905

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

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 .....

@CLAassistant
Copy link

CLAassistant commented Jul 5, 2024

CLA assistant check
All committers have signed the CLA.

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.
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.

2 participants