This repository was archived by the owner on Nov 15, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2.7k
BREAKING Overlay transaction support. #3263
Closed
Closed
Changes from 186 commits
Commits
Show all changes
203 commits
Select commit
Hold shift + click to select a range
ef20f40
init some bench
cheme a218162
Init implementing.
cheme 4e8f6a7
Initial implementation of prospective with unbound layer.
cheme 917e26b
Remove size counter
cheme 8b93ab7
fix ix.
cheme ae8e880
code for transactional layers: TODO testing!!
cheme c716f95
Regain perfs (-15%) by using a couple of static memory for
cheme 808a409
Fix tx logic and basic tx test.
cheme e481952
with_transaction function and high level test.
cheme d9f3e50
state was useless in overlayed change (allways the last ix of history).
cheme cc0aa37
Cleaning comments and names.
cheme 2bc2af0
Merge branch 'master' into overlay_change
cheme 0c8235e
Rename Externalities primitives to 'storage_' + old name.
cheme 5b98b4b
Merge branch 'master' into overlay_change
cheme cade913
name fields instead of tuble.
cheme fd26b2a
Update srml/support/src/storage/mod.rs
cheme 3245968
Use more efficient smallvec.
cheme 8550ad9
Merge branch 'overlay_change' of github.com:cheme/polkadot into overl…
cheme 41483b5
Missing spaces.
cheme 44f5173
slice and slice to_vec from ptr to vec.
cheme 00326b2
Init some fuzzing (only look for panic).
cheme fc2100d
Implement simplier inefficient overlay to fuzz compare.
cheme e38fc7b
Update core/state-machine/src/overlayed_changes.rs
cheme b8564e6
implement overlay garbage collection.
cheme 21aa65d
Trigger gc based on constant rule.
cheme c8938d3
Managing a configuration for gc of overlay. This commit will be revert
cheme d1d947b
Revert "Managing a configuration for gc of overlay. This commit will …
cheme f4fb1e1
Merge branch 'master' into overlay_change
cheme 2836808
Merge branch 'master' into overlay_change
cheme 968ba35
Merge branch 'master' into overlay_change
cheme d703ee4
Merge branch 'master' into overlay_change
cheme ee52917
Direct iterator on children, not that the fact that it is owned does not
cheme 249675e
Merge branch 'overlay_change' of github.com:cheme/polkadot into overl…
cheme 0100d70
Merge branch 'master' into overlay_change
cheme da093d5
Merge branch 'master' into overlay_change
cheme af4cceb
warning fix
cheme 4e68123
Extracting transaction history and states plus logics to its own
cheme 75fd798
Make history buffer parametric (to allow encoding efficient
cheme 1fb154e
Removed history trait, to go to the more pragmatic macro approach (after
cheme 46de531
macroed code (trait would be better but not at this point).
cheme 80f4c2b
Fix basis code.
cheme 8dbd48d
Remove serialized variant.
cheme 9203e25
change some variables name, try to document gc.
cheme ea028ec
Change operation cost proto, add into_pending method and few formatting
cheme c69e258
Merge branch 'master' into overlay_change
cheme 0ab789e
Doc and renaming 'force_push' to 'unsafe_push' (this function being
cheme 8d45d31
Merge branch 'master' into overlay_change
cheme 9488ca1
Merge branch 'master' into overlay_change
cheme 09a24e0
Merge branch 'overlay_change' of github.com:cheme/substrate into over…
cheme b596b52
Merge branch 'master' into overlay_change
cheme 5cc5fd0
Merge branch 'master' into overlay_change
cheme 117388e
bump spec version
cheme 1647084
Merge branch 'master' into overlay_change
cheme 838cd3b
Addressing some nits, adding fuzz check into ci benches target.
cheme 5437981
Merge branch 'master' into overlay_change
cheme fe38b30
Update iter docs, bump runtime version.
cheme b7dcd6d
Merge branch 'master' into overlay_change
cheme 616fc2a
Simplify top and child iter into a single function.
cheme 7001e8c
Restore access to iter for fuzzer.
cheme b534b3d
Merge branch 'master' into overlay_change
cheme a84b8db
rename gc for liner to get_mut_pruning, rename unsafe_push to
cheme 9787a97
switch tuple to historiedvalue struct.
cheme d9d2118
use len instead of internal_item_counts
cheme 887f95b
historied value on get and get mut to.
cheme 1074c8c
Merge branch 'master' into overlay_change
Demi-Marie 076623d
Merge branch 'master' into overlay_change
cheme 937655f
Merge branch 'overlay_change' of github.com:cheme/polkadot into overl…
cheme ff4bcb0
proper rand on bench
cheme 45dc935
Update core/utils/historied-data/README.md
cheme d7c9f8a
Update core/utils/historied-data/src/lib.rs
cheme 6c9abda
Update core/utils/historied-data/src/linear.rs
cheme 89b4f26
Switching runtime test to panic instead of returning result.
cheme 2ab0da3
Merge branch 'overlay_change' of github.com:cheme/polkadot into overl…
cheme 6673ce1
Merge branch 'master' into overlay_change
cheme cdd1c3e
Merge branch 'master' into overlay_change
cheme e076d12
Avoid clone explicitely in some case (the clone with this PR is
cheme b877213
remove it from parameter.
cheme fc66ecd
Merge branch 'master' into overlay_change
cheme dcdd32c
Merge branch 'master' into overlay_change
cheme 6a153e5
Merge branch 'overlay_change' of github.com:cheme/polkadot into overl…
cheme 32e6268
fix merge.
cheme cf943e2
Apply suggestions from code review
cheme 4a439af
Merge branch 'overlay_change' of github.com:cheme/polkadot into overl…
cheme c71e2c5
Smallvec is compatible with no_std.
cheme 71c4012
fix fuzz, rename 'test' feature to more substratish 'test-helpers'.
cheme 4ca0b40
Implement with less state.
cheme 47b8867
revert to no gc of commited data
cheme d9a0fb5
renaming some history variables and field to states.
cheme 1c06ce1
satisfactory get_mut, pruning need changes.
cheme c399c58
Fix gc (fuzz seems ok), a bit more work on avoiding redundancy in
cheme 106d84b
remove a bit of code redundancy.
cheme 6b5aeea
rename historied to historical
cheme 8738b30
Merge branch 'master' into overlay_change
cheme 594ce64
removing dubious as_ref_mut method (intermediate tuple is not optimized
cheme 7546e6a
Named field for States.
cheme 2e6fa4c
change find_previous_transaction to use an in memory state.
cheme cd7113b
update runtime versions.
cheme a995150
Merge branch 'master' into overlay_change
cheme 789af78
Merge branch 'master' into overlay_change, and few english nits.
cheme 1a12715
Merge branch 'master' into overlay_change
cheme 6625ab8
Merge branch 'overlay_change' of github.com:cheme/polkadot into overl…
cheme 2d91b89
fix some documentation nits.
cheme 61dba1e
Documentation.
cheme 6334c10
favor for expression when possible.
cheme 1b9ff7b
use 'get_unchecked_pending' for a recurrent pattern matching.
cheme 55cacc1
Reorganize historical crate and documentation.
cheme 4920da4
fix import.
cheme 4a1fb7f
Preparing refactor.
cheme a995e18
setting up linear synch historical data.
cheme fb01856
quick implementation before fuzzing.
cheme ef0bcda
code fix and overlay implemetation, before deletion of old code.
cheme e265ad1
New implementation accounts for a 17 and 20% lost on existing bench.
cheme 9904c4f
Remove unuse code. Test failings.
cheme 0a98033
Merge branch 'master' into overlay_change
cheme 5f82305
Fix broken tests (obviously cloning only state do not work anymore).
cheme 494ad42
Removing trailing spaces.
cheme f7b9594
rename 'ensure_runing' to 'finalize_discard' as it is only really needed
cheme 55d112a
renaming PruneResult to CleaningResult.
cheme 741d420
fix compilation issue
cheme 19b1014
Field name for states.
cheme a2bab20
Merge branch 'master' into overlay_change
cheme 4b90775
Fix conflicts.
cheme a81fb12
fix ci for checking fuzz
cheme d9ff813
No sense in having new ext in deprecated interface.
cheme fa0ec93
Ensure discard prospective.
cheme e0b580e
Merge branch 'master' into overlay_change
cheme efa05f1
Merge branch 'master' into overlay_change
cheme e0a6243
Merge branch 'master' into overlay_change
cheme 281344b
Merge branch 'master' into overlay_change
cheme 2676397
Merge branch 'master' into overlay_change
cheme fbdbd34
Merge branch 'master' into overlay_change
cheme 80c55c6
Merge branch 'overlay_change' of github.com:cheme/substrate into over…
cheme 5597bf3
update cargo.lock
cheme 9c09b78
fix crate names for bench and fuzz
cheme 28413a7
Merge branch 'master' into overlay_change
cheme 1e1e790
Address nits: remove test-helpers specific derive, make 'len' function
cheme 827441c
Merge branch 'master' into overlay_change
cheme ac424ac
Merge branch 'master' into overlay_change
cheme 6d3e10f
Merge branch 'master' into overlay_change
cheme 19733c5
fix merge (runtime-io to sp-io)
cheme f7a1193
Merge branch 'master' into overlay_change
cheme 0f8bee6
Move historical-data crate to primitives.
cheme 106b1f7
Merge branch 'master' into overlay_change
cheme fd262d9
Historical values documentation update.
cheme 8f79592
Merge branch 'master' into overlay_change
cheme d1554ec
Documentation change on overlay_change
cheme 92d5184
Merge branch 'master' into overlay_change
cheme 81f5c90
adding cargo.lock to overlay fuzzing
cheme 57a2ddd
Merge branch 'master' into overlay_change
cheme 70946d1
rewrite readme, rename historicalvalue to historicalentry
cheme dc4462a
spelling an slight documentation change.
cheme 0004cf4
Merge branch 'master' into overlay_change
cheme 2a5b816
Merge branch 'overlay_change' of github.com:cheme/polkadot into overl…
cheme d00f3e8
Merge branch 'master' into overlay_change
cheme 7bc1c6c
Fix runtime tests.
cheme 7a99509
apply update-copyright.sh
cheme 256f3a5
move transaction to its own transaction runtime module.
cheme 80f3d38
synch_linear_transaction renamed to sync_linear_transaction
cheme c9873b8
unused dependency to sp-std
cheme 4f0c633
nits.
cheme b3014ae
Comments for `apply_commit_transaction` internals.
cheme 412fba4
Use 'COMMITTED_LAYER' const to make code clearer.
cheme 4f4fed6
Fix refacto error.
cheme 9dee523
Discard transaction is same as truncate.
cheme f055f3b
Move helpers implementations.
cheme 441d5ca
Declare transaction host function for wasm
cheme 96f9662
renaming prior to removal of historical-data
cheme b3078a7
Flattern historical data crate & fix discard transaction latest commit
cheme 9f01802
Move transaction code in its own module.
cheme 92c99af
Move fuzzer base code to sp-state-machine to add non regression
cheme 5614176
Merge branch 'master' into overlay_change
cheme f18f4d3
Merge branch 'master' into overlay_change
cheme 26cfd0f
fix `where` formatting and some documentation from pr review.
cheme ab272e3
Simplify logic for commit transaction.
cheme e93097e
Merge branch 'master' into overlay_change
cheme 2970099
provious lazy design for transaction.
cheme ec7f683
Switch overlay_change primitives.
cheme 68b9678
Switch to mutable for storage, child storage and similar.
cheme 6b14213
Merge branch 'master' into overlay_change
cheme 8cc64bb
Merge branch 'overlay_change' into overlay_change_lazy
cheme 6227baf
Merge branch 'overlay_change_lazy' into overlay_change_lazy_mut
cheme be9811d
Merge branch 'master' into overlay_change
cheme e69fd24
Merge branch 'overlay_change' into overlay_change_lazy_mut
cheme 47f117a
Fix some doc, mark loop enhancement to test.
cheme 5f26869
best loop condition, and manage deleted offset out of actual deletion.
cheme 09539d4
fix benches.
cheme ea1fe4f
Merge branch 'master' into overlay_change
cheme b109130
Fixing line lengths.
cheme 2533b04
Merge branch 'master' into overlay_change
cheme 1db0bec
increment spec version
cheme 121e64b
storage transaction host module name.
cheme 1e2497a
3 new function, switching index of missing one in wasmtime test.
cheme 46e54c8
another hardcoded wasmtime index in test.
cheme 1e8cd7b
Merge branch 'master' into overlay_change
cheme 1667f18
Merge branch 'master' into overlay_change
cheme 5df5e51
Merge branch 'master' into overlay_change
cheme 0d29a09
Merge branch 'master' into overlay_change
cheme 4d6af74
Added a descriptive test of internal state. This does not intend to
cheme 6242ebc
Merge branch 'master' into overlay_change
cheme 683abcb
update fuzzer cargo.lock
cheme 0c8d9e7
Merge branch 'master' into overlay_change
cheme e620a05
Merge branch 'master' into overlay_change
cheme 45d5c7c
fix bench
cheme File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
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
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
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
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -86,7 +86,7 @@ fn child_storage_key_or_panic(storage_key: &[u8]) -> ChildStorageKey { | |
| #[runtime_interface] | ||
| pub trait Storage { | ||
| /// Returns the data for `key` in the storage or `None` if the key can not be found. | ||
| fn get(&self, key: &[u8]) -> Option<Vec<u8>> { | ||
| fn get(&mut self, key: &[u8]) -> Option<Vec<u8>> { | ||
| self.storage(key).map(|s| s.to_vec()) | ||
| } | ||
|
|
||
|
|
@@ -102,7 +102,7 @@ pub trait Storage { | |
| /// This function specifically returns the data for `key` in the child storage or `None` | ||
| /// if the key can not be found. | ||
| fn child_get( | ||
| &self, | ||
| &mut self, | ||
| child_storage_key: &[u8], | ||
| child_definition: &[u8], | ||
| child_type: u32, | ||
|
|
@@ -119,7 +119,7 @@ pub trait Storage { | |
| /// doesn't exist at all. | ||
| /// If `value_out` length is smaller than the returned length, only `value_out` length bytes | ||
| /// are copied into `value_out`. | ||
| fn read(&self, key: &[u8], value_out: &mut [u8], value_offset: u32) -> Option<u32> { | ||
| fn read(&mut self, key: &[u8], value_out: &mut [u8], value_offset: u32) -> Option<u32> { | ||
| self.storage(key).map(|value| { | ||
| let value_offset = value_offset as usize; | ||
| let data = &value[value_offset.min(value.len())..]; | ||
|
|
@@ -137,7 +137,7 @@ pub trait Storage { | |
| /// | ||
| /// See `child_get` for common child api parameters. | ||
| fn child_read( | ||
| &self, | ||
| &mut self, | ||
| child_storage_key: &[u8], | ||
| child_definition: &[u8], | ||
| child_type: u32, | ||
|
|
@@ -217,15 +217,15 @@ pub trait Storage { | |
| } | ||
|
|
||
| /// Check whether the given `key` exists in storage. | ||
| fn exists(&self, key: &[u8]) -> bool { | ||
| fn exists(&mut self, key: &[u8]) -> bool { | ||
| self.exists_storage(key) | ||
| } | ||
|
|
||
| /// Check whether the given `key` exists in storage. | ||
| /// | ||
| /// See `child_get` for common child api parameters. | ||
| fn child_exists( | ||
| &self, | ||
| &mut self, | ||
| child_storage_key: &[u8], | ||
| child_definition: &[u8], | ||
| child_type: u32, | ||
|
|
@@ -313,6 +313,25 @@ pub trait Storage { | |
| } | ||
| } | ||
|
|
||
| /// Interface for managing transaction within the runtime. | ||
| #[runtime_interface] | ||
| pub trait Transaction { | ||
|
||
| /// Start a new transaction. | ||
| fn start_transaction(&mut self) { | ||
| self.storage_start_transaction(); | ||
| } | ||
|
|
||
| /// Discard a transactional layer. | ||
| fn discard_transaction(&mut self) { | ||
| self.storage_discard_transaction(); | ||
| } | ||
|
|
||
| /// Commit a transactional layer. | ||
| fn commit_transaction(&mut self) { | ||
| self.storage_commit_transaction(); | ||
| } | ||
| } | ||
|
|
||
| /// Interface that provides trie related functionality. | ||
| #[runtime_interface] | ||
| pub trait Trie { | ||
|
|
@@ -908,6 +927,7 @@ pub type TestExternalities = sp_state_machine::TestExternalities<sp_core::Blake2 | |
| #[cfg(feature = "std")] | ||
| pub type SubstrateHostFunctions = ( | ||
| storage::HostFunctions, | ||
| transaction::HostFunctions, | ||
| misc::HostFunctions, | ||
| offchain::HostFunctions, | ||
| crypto::HostFunctions, | ||
|
|
||
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
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.