fix: batch write race on commit#983
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (invoked as PR comments)
Additionally, you can add CodeRabbit Configuration File (
|
|
For more context, see this issue on omni that resulted in this PR. |
| // Wait for previous batch. | ||
| var err error | ||
| if i.inflightCommit != nil { | ||
| err = <-i.inflightCommit |
There was a problem hiding this comment.
maybe using a sync.Mutex around batch.Write(Sync) and batch.Commit would be easier to reason about?
|
@Mergifyio backport master |
🛑 Command
|
|
Hi all, is there anything more I need to do from my side? |
|
@Mergifyio backport master |
(cherry picked from commit fe80f0a)
✅ Backports have been createdDetails
|
Co-authored-by: corver <corver.roos@gmail.com>
v1.2.5 contains the backport of cosmos/iavl#983 which fixes a race in Importer.Commit: LoadVersion could run before the previous async batch finished writing, leaving the imported IAVL tree incomplete. On statesync joiners this surfaced as FinalizeBlock returning "validator does not exist" on the first replayed block.
v1.2.5 contains the backport of cosmos/iavl#983 which fixes a race in Importer.Commit: LoadVersion could run before the previous async batch finished writing, leaving the imported IAVL tree incomplete. On statesync joiners this surfaced as FinalizeBlock returning "validator does not exist" on the first replayed block.
## Summary Bumps `github.com/cosmos/iavl` from `v1.2.2` to `v1.2.5`. `v1.2.5` backports [cosmos/iavl#983](cosmos/iavl#983), which fixes a race in `Importer.Commit`: `LoadVersion` could run before the previous async batch write had finished, leaving the imported IAVL tree incomplete. On state-synced nodes this surfaced as `FinalizeBlock` returning `"validator does not exist"` on the first replayed block. issue: #829
Wait for previous batch before writing batch on
importer.Commit