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

Reorder the db WriteBlock codes to reduce the harm of partial-write #52

Merged
merged 1 commit into from
May 23, 2022

Conversation

DarianShawn
Copy link
Collaborator

Description

The PR fixes a fatal problem when block is partial written to the db.

When a node is Writing block, the state was written after WriteHeader, once the node restart just after WriteHeader, the node would definitely failed to sync from other nodes any more.

The only way to recover by now, is to remove all blockchain data, and restart syncing from the Genesis block.

Because the node take if for granted that it has the the current header's state saved, though it is not. When syncing blocks, it would failed due to state not found.

The best way would be using batch written implementation like go-ethereum, which provides some transaction-like mechanism. It should be another big PR though.

Changes include

  • Bugfix (non-breaking change that solves an issue)
  • Hotfix (change that solves an urgent issue, and requires immediate attention)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (change that is not backwards-compatible and/or changes current functionality)

Checklist

  • I have assigned this PR to myself
  • I have added at least 1 reviewer
  • I have added the relevant labels
  • I have updated the official documentation
  • I have added sufficient documentation in code

Testing

  • I have tested this code with the official test suite
  • I have tested this code manually

Manual tests

  1. Set up a 4-validators network.
  2. Stop a normal validator, wait a minute or so.
  3. Replace with a reproduction node
  4. Replace the normal node back.
  5. We should see logs like jury-bulksync-fail-202205024.log

@DarianShawn DarianShawn added the hotfix Major bug fix that should be merged ASAP label May 21, 2022
@DarianShawn DarianShawn self-assigned this May 21, 2022
Copy link
Collaborator

@abrahamcruise321 abrahamcruise321 left a comment

Choose a reason for hiding this comment

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

LGTM

@abrahamcruise321 abrahamcruise321 merged commit 82b6abb into dev May 23, 2022
@abrahamcruise321 abrahamcruise321 deleted the fix/wrong-code-order-of-WriteBlock branch May 23, 2022 08:08
@github-actions github-actions bot locked and limited conversation to collaborators May 23, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
hotfix Major bug fix that should be merged ASAP
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants