Adjust pending nonce update operation#21164
Closed
WeiLoy wants to merge 3 commits into
Closed
Conversation
rjl493456442
reviewed
Jun 4, 2020
| pool.truncatePending() | ||
| pool.truncateQueue() | ||
|
|
||
| // Update all accounts to the latest known pending nonce |
Member
There was a problem hiding this comment.
I don't think it's correct. truncatePending will drop the overflowed transactions from the pending list. In the original code, the pending nonces will be set back.
Contributor
Author
There was a problem hiding this comment.
- But in
truncatePending, thenonceof the account will be updated throughpool.pendingNonces.setIfLowerwhile deleting the overflowed transaction. The account that needs to be updatednoncehas been updated in this function, so There is no need to reset the account again outside the function. - In the original code, if you are performing the
resetaction, first executetruncatePending. Since the value ofpool.pendingNonceshas been cleared in theresetfunction, the subsequent steps are executed. WhentruncatePendingdeletes the overflow transaction,pool.pendingNonces.setIfLoweractually reads thenonceinStateDBto judge, the condition is not established and will not be updated to the highestnonce, and finally by direct update All accounts are realized - So only need to update all
noncetopool.pendingNoncesat the time ofreset, and after the update is completed, then executetruncatePending, this time if the function deletes the overflow transaction,pool .pendingNonces.setIfLoweris able to update thenonceof the corresponding account
Contributor
|
Can you write some benchmarks to show this change is worth the risk? |
Contributor
Author
Contributor
|
Closing in favour of #22231 (same as this PR but rebased on |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.


truncatePendingfunction, thenoncevalue of the account will be updated immediately when the overflow transaction is deleted, so it is only necessary to update thenonceof all accounts after performingresetto avoid affecting the efficiency of inserting transactions