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
feature: mempool v1 implementation #6466
Conversation
Codecov Report
@@ Coverage Diff @@
## master #6466 +/- ##
==========================================
- Coverage 60.93% 60.54% -0.40%
==========================================
Files 292 298 +6
Lines 27322 27943 +621
==========================================
+ Hits 16650 16919 +269
- Misses 8976 9301 +325
- Partials 1696 1723 +27
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Utack
Need a change log entry for the changes
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM 👍
func DefaultMempoolConfig() *MempoolConfig { | ||
return &MempoolConfig{ | ||
Version: MempoolV1, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't we want the default to be MempoolV0
at least until V1 is complete else the node is just going to panic for anything that uses the default config
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, we want v1 to be default. Once I wrap up the 2nd PR, nothing will panic or fail.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok. So do you plan to merge the PR's together before merging on master?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, exactly :)
That will come in the 2nd PR. |
This seems fine, though I wonder if it's necessary:
|
I'm sorry, but I don't follow this...CheckTx will perform the same logic. Wdym by passing values?
It depends. There could be multiple mempools we maintain (as @ValarDragon pointed out) and various operator types may want to use different ones, e.g. validators use X and and sentries/full-nodes use Y, etc...That being said, I see no reason why we'd maintain v0 after 0.35 or after. |
My assertion/understanding is that using the new mempool with an old application (e.g. one that passes 0 priority for everything will have the same semantics, and be isomorphic to the legacy mempool. If this is true, is there any reason to let the mempool be configurable? Similarly, particularly since we're not likely to maintain the legacy implementation in the long term, is providing configuration in the short term going to be valuable, and not just create more operational pain when we remove it/etc. Though it's definitely true that I don't 100% understand the operational case for using the legacy mempool in some cases? |
Gossiping remains the same, however, block inclusion/construction will not be the same. |
Implementation of ADR-067 -- mempool v1.
Note, to aid in review, I've decided to split up this work into two PRs: