chore(lib/runtime): refactor version struct and codec#2673
Merged
qdm12 merged 9 commits intodevelopmentfrom Aug 16, 2022
Merged
chore(lib/runtime): refactor version struct and codec#2673qdm12 merged 9 commits intodevelopmentfrom
qdm12 merged 9 commits intodevelopmentfrom
Conversation
a82106d to
358f997
Compare
ad971fa to
5704086
Compare
Codecov Report
Additional details and impacted files@@ Coverage Diff @@
## development #2673 +/- ##
===============================================
- Coverage 62.91% 62.86% -0.05%
===============================================
Files 213 213
Lines 27081 26993 -88
===============================================
- Hits 17037 16970 -67
+ Misses 8491 8475 -16
+ Partials 1553 1548 -5 |
0bfc86f to
acff5db
Compare
acff5db to
ecfdd74
Compare
ecfdd74 to
9675efa
Compare
noot
approved these changes
Aug 8, 2022
Contributor
noot
left a comment
There was a problem hiding this comment.
i think this is fine assuming the encoding is the same (should be cause tests pass :p)
EclesioMeloJunior
approved these changes
Aug 9, 2022
aa3bad5 to
b187971
Compare
timwu20
requested changes
Aug 9, 2022
b187971 to
ab9721f
Compare
Contributor
Author
|
|
901376b to
c4e418d
Compare
c4e418d to
a2b9f95
Compare
Contributor
Author
|
This is ready for re-reviews again, thanks! |
VersionData
This was referenced Aug 11, 2022
11e5200 to
6486321
Compare
- Simplify testing in other packages - Remove version decode method (just use `scale.Unmarshal` directly) - Remove clone struct with exported fields for scale codec - Remove version runtime mockery mock - Refactor multiple `TestInstance_Version*` in one test with test cases - Add runtime API items as expected fields in tests - side-effect: add `Get` prefix to getter methods (sus but better than having messy double-structs-which-make-testing-hard)
- Remove `Version` interface - Use `legacy` bool field in version struct - Unexport `LegacyVersionData` - Remove all getter methods - Move decoding logic from wasmer to lib/runtime/version.go - Use struct value instead of its pointer
- Add `WithLegacy()` method to set unexported `legacy` field in wasmer test
- Always encode using all latest fields - Decode required fields then optional fields - Remove `legacyData` struct - Update `Encode` and `DecodeVersion` comments - Update unit tests
- Update comment for `scale.Marshal` on `Version` - Remove `Test_Version_Encode`
6486321 to
3386e46
Compare
timwu20
approved these changes
Aug 16, 2022
rrtti
pushed a commit
to polkadot-fellows/seeding
that referenced
this pull request
Sep 29, 2022
I am Quentin Mc Gaw, a software engineer working the Go Polkadot host **Gossamer**. I have been working full time on Gossamer since October 2021, mostly on the state trie and storage. I have also made a [few minor pull requests](https://github.com/w3f/polkadot-spec/pulls?q=is%3Apr+is%3Aclosed+author%3Aqdm12) to the Polkadot specification repository. I am requesting to join the Fellowship at rank 1. ## Main contributions ### Gossamer - Fix memory leaks - Trie encoding buffer pools usage fixed [#2009](ChainSafe/gossamer#2009) - Fix state map of tries memory leak [#2286](ChainSafe/gossamer#2286) - Fix sync benchmark [#2234](ChainSafe/gossamer#2234) - Trie proof fixes ([#2604](ChainSafe/gossamer#2604), [#2661](ChainSafe/gossamer#2661)) - Fix end to end tests orchestration ([#2470](ChainSafe/gossamer#2470), [#2452](ChainSafe/gossamer#2452), [#2385](ChainSafe/gossamer#2385), [#2370](ChainSafe/gossamer#2370)) - State trie statistics ([#2378](ChainSafe/gossamer#2378), [#2310](ChainSafe/gossamer#2310), [#2272](ChainSafe/gossamer#2272)) - State trie fixes and improvements - Only deep copy nodes when mutation is certain [#2352](ChainSafe/gossamer#2352) and [#2223](ChainSafe/gossamer#2223) - Only deep copy necessary fields of a node [#2384](ChainSafe/gossamer#2384) - Use Merkle values for database keys instead of always hash [#2725](ChainSafe/gossamer#2725) - Opportunistic parallel Merkle value commputing [#2081](ChainSafe/gossamer#2081) - Grandpa capped number of tracked messages ([#2490](ChainSafe/gossamer#2490), [#2485](ChainSafe/gossamer#2485)) - Add pprof HTTP service for profiling [#1991](ChainSafe/gossamer#1991) Ongoing work: - State trie lazy loading and caching - State trie v1 support ([#2736](ChainSafe/gossamer#2736), [#2747](ChainSafe/gossamer#2747), [#2687](ChainSafe/gossamer#2687), [#2686](ChainSafe/gossamer#2686), [#2685](ChainSafe/gossamer#2685), [#2673](ChainSafe/gossamer#2673), [#2611](ChainSafe/gossamer#2611), [#2530](ChainSafe/gossamer#2530)) ### Polkadot specification ➡️ [Pull requests from qdm12](https://github.com/w3f/polkadot-spec/pulls?q=is%3Apr+is%3Aclosed+author%3Aqdm12)
|
🎉 This PR is included in version 0.7.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
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.
Changes
VersionstructVersionalways encode all the last fieldsVersionsets possible absent fields as zero if not in the data (transaction_version)LegacyVersionDatastruct,Versioninterface, getter methods, cloned structs for codeclib/runtime/wasmer/exports.gotolib/runtime/version.goinDecodeVersionfunctionVersioninstead of its pointer (no reason to use a pointer)TestInstance_Version*in one test with test casesNewVersionDataTests
Issues
I had to change a whole bunch of version related code to persist the state version, and I thought I would simplify it since it was rather confusing as a reader.
Primary Reviewer
@timwu20