fix: ensure L1 messages are stored in db consistently #679
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
1. Purpose or design rationale of this PR
In
fetchMessagesInRange
we did not checkit.Error()
. If there is a transient error in the L1 node, we could miss some L1 messages and end up with an inconsistent database. The correct behavior is to detect error and retry.Since L1 message consistency (that means that we have all L1 messages with no gap in queue index) was taken for granted, the only consistency check was in
ReadL1MessagesFrom
. This PR adds a consistency check inSyncService.fetchMessages
to allow us to detect inconsistencies early and avoid corrupting the node's local database.Fixes #592.
2. PR title
Your PR title must follow conventional commits (as we are doing squash merge for each PR), so it must start with one of the following types:
3. Deployment tag versioning
Has the version in
params/version.go
been updated?4. Breaking change label
Does this PR have the
breaking-change
label?