Add separate config to disable balance pruning #354
Closed
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.
Motivation
We are experiencing a similar performance issue described in #316, when we are running
check:data
command.We found that
PruneBalances
operation is the root culprit of the performance issue.As you know, by default, the
PruneBalances
is called whenever a balance change happened for an account in a block.BTW, in some blockchains (like ICON), there is an account that is always included in every block (eg,
fee_treasury
), which makes only one reconcile goroutine is effectively active and the other goroutines that callreconcileActiveAccounts
method would block onrosetta-sdk-go/storage/database.(*BadgerDatabase).WriteTransaction
.Solution
There is an existing config for disabling pruning,
PruningDisabled
. But this config also applies to the state storage pruning.We want to introduce a separate config only for balance pruning operation, named
PruningBalanceDisabled
.Open questions
None