-
Notifications
You must be signed in to change notification settings - Fork 627
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
Pipelining #12015
Pipelining #12015
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #12015 +/- ##
==========================================
+ Coverage 71.50% 71.54% +0.03%
==========================================
Files 819 821 +2
Lines 164896 165172 +276
Branches 164896 165172 +276
==========================================
+ Hits 117912 118169 +257
- Misses 41829 41859 +30
+ Partials 5155 5144 -11
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
Hey, @pugachAG this is now good to look at. In particular curious what's going to be your opinion on introducing function arguments to control side-effectfulness across the Should be quite reviewable on a commit-by-commit basis, with the first two being simple reverts of the reverts. |
This code was running without a hitch throughout the weekend until my instance ran out of disk early this morning 😓 |
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.
@nagisa I assume that pipelining implementation is the same as it was in the reverted commit. Please let me know if that is not the case and I take another look.
New changes on the storage side look good to me 👍
core/store/src/trie/update.rs
Outdated
if let Some(key_value) = self.prospective.get(&key) { | ||
return Ok(key_value.value.as_ref().map(<Vec<u8>>::clone)); | ||
} else if let Some(changes_with_trie_key) = self.committed.get(&key) { | ||
if let Some(RawStateChange { data, .. }) = changes_with_trie_key.changes.last() { | ||
return Ok(data.as_ref().map(<Vec<u8>>::clone)); | ||
} | ||
} |
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.
this looks exactly the same as for get
, consider extracting shared code to a separate method, something like get_from_updates
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.
Done. I'll hold off on merging this until #12027 comes to a conclusion...
Huh, it started failing tests badly after the rebase... Oh well... Something for future me to figure out. EDIT: looks like something went wrong in 5cfd0d7... |
The test was accidentally checking for the wrong things and has stopped working once those wrong things have moved to other places...
This reverts commit 4e93e46.
This reverts commit 86cd45b.
To address the issues seen that led to the functionality being reverted in the first place I had to add some mechanisms to query The State in a side-effect-free (pure) manner and to also revert some changes from the original change-set where we the new code would not produce the side-effects that were expected by the other nodes.