1. Nov 29, 2023
  2. Oct 10, 2023
    • Liam Aharon's avatar
      remote-ext: fix state download stall on slow connections and reduce memory usage (#1295) · 55f35442
      Liam Aharon authored
      Original PR https://github.com/paritytech/substrate/pull/14746
      
      ---
      
      ## Fixing stall
      
      ### Introduction
      I experienced an apparent stall downloading state from
      `https://rococo-try-runtime-node.parity-chains.parity.io:443` which was
      having networking difficulties only responding to my JSONRPC requests
      with 50-200KB/s of bandwidth.
      
      This PR fixes the issue causing the stall, and generally improves
      performance remote-ext when it downloads state by greatly reducing the
      chances of a timeout occuring.
      
      ### Description
      Introduces a new `REQUEST_DURATION_TARGET` constant and modifies
      `get_storage_data_dynamic_batch_size` to
      
      - Increase or decrease the batch size of the next request depending on
      whether the elapsed time of the last request was gt or lt the target
      - Reset the batch size to 1 if the request times out
      
      This fixes an issue on slow connections that can otherwise cause
      multiple timeouts and a stalled download when:
      
      1. The batch size increases rapidly as remote-ext downloads keys with
      small associated storage values
      2. remote-ext tries to process a large series of subsequent keys all
      with extremely large associated storage values (Rococo has a series of
      keys 1-5MB large)
      3. The huge storage values download for 5 minutes until the request
      times out
      4. The partially downloaded keys are thrown out and remote-ext tries
      again with a smaller batch size, but the batch size is still far too
      large and takes 5 minutes to be reduced again
      5. The download will be essentially stalled for many hours while the
      above step cycles
      
      
      After this PR, the request size will
      
      - Not grow as large to begin with, as it is regulated downwards as the
      request duration exceeds the target
      - Drop immediately to 1 if the request times out. A timeout indicates
      the keys next in line to download have extremely large storage values
      compared to previously downloaded keys, and we need to reset the batch
      size to figure out what our new ideal batch size is. By not resetting
      down to 1, we risk the next request timing out again.
      
      ## Reducing memory
      
      As suggested by @bkchr, I adjusted `get_storage_data_dynamic_batch_size`
      from being recursive to a loop which allows removing a bunch of clones
      that were chewing through a lot of memory. I noticed actually it was
      using up to 50GB swap previously when downloading Polkadot keys on a
      slow connection, because it needed to recurse and clone a lot.
      
      After this change it uses only ~1.5GB memory.
      55f35442
  3. Aug 17, 2023
  4. Jul 25, 2023
  5. Jun 27, 2023
  6. Jun 21, 2023
  7. May 19, 2023
  8. May 07, 2023
  9. May 05, 2023
    • Liam Aharon's avatar
      try-runtime-cli: 'instant' snapshots, threading refactor, better progress logs (#14057) · ead46b9e
      Liam Aharon authored
      * remote externalities refactor
      
      * remove redundant logs
      
      * use const for parallel requests
      
      * prefer functional
      
      * improve variable naming
      
      * handle requests error
      
      * use overlayedchanges
      
      * Revert "use overlayedchanges"
      
      This reverts commit c0ddb87a5abdd52207597f5df66cbbdf9d79badc.
      
      * Revert "Revert "use overlayedchanges""
      
      This reverts commit 1d49362d9b999c045c8f970a0ab8b486bc47a90a.
      
      * Revert "Revert "Revert "use overlayedchanges"""
      
      This reverts commit 06df786488d94f249e9abccffac4af445f76e5a7.
      
      * backup/load raw storage values
      
      * test raw storage drain and restore
      
      * update snapshot tests
      
      * improve logs
      
      * clippy suggestions
      
      * address comments
      
      * fix example
      
      * fix test
      
      * clippy
      ead46b9e
  10. Apr 27, 2023
  11. Apr 21, 2023
    • Liam Aharon's avatar
      try-runtime: dynamic storage query sizes (#13923) · bc1a5992
      Liam Aharon authored
      
      
      * improve batch rpc error message
      
      * wip aimd storage data fetch
      
      * complete aimd function refactor
      
      * make batch_request function async
      
      * improve function name
      
      * fix load_child_remote issue
      
      * slight efficiency improvement
      
      * improve logs and variable name
      
      * remove redundant comment
      
      * improve comment
      
      * address pr comments
      
      * Update utils/frame/remote-externalities/src/lib.rs
      
      Co-authored-by: default avatarNiklas Adolfsson <[email protected]>
      
      * simplify client handling
      
      * fix type issue
      
      * fix clippy issue
      
      * try to trigger ci
      
      * try to trigger ci
      
      ---------
      
      Co-authored-by: default avatarNiklas Adolfsson <[email protected]>
      bc1a5992
  12. Feb 21, 2023
    • Vivek Pandya's avatar
      Remove years from copyright notes. (#13415) · bc53b9a0
      Vivek Pandya authored
      * Change copyright year to 2023 from 2022
      
      * Fix incorrect update of copyright year
      
      * Remove years from copy right header
      
      * Fix remaining files
      
      * Fix typo in a header and remove update-copyright.sh
      bc53b9a0
  13. Dec 14, 2022
  14. Dec 12, 2022
    • Kian Paimani's avatar
      Remove implicit approval chilling upon slash. (#12420) · 0b296916
      Kian Paimani authored
      
      
      * don't read slashing spans when taking election snapshot
      
      * update cargo.toml
      
      * bring back remote test
      
      * fix merge stuff
      
      * fix npos-voters function sig
      
      * remove as much redundant diff as you can
      
      * Update frame/staking/src/pallet/mod.rs
      
      Co-authored-by: default avatarAndronik <[email protected]>
      
      * fix
      
      * Update frame/staking/src/pallet/impls.rs
      
      * update lock
      
      * fix all tests
      
      * review comments
      
      * fmt
      
      * fix offence bench
      
      * clippy
      
      * ".git/.scripts/bench-bot.sh" pallet dev pallet_staking
      
      Co-authored-by: default avatarAndronik <[email protected]>
      Co-authored-by: default avatarAnkan <[email protected]>
      Co-authored-by: command-bot <>
      0b296916
    • Niklas Adolfsson's avatar
      rpc server with HTTP/WS on the same socket (#12663) · 84303ca7
      Niklas Adolfsson authored
      * jsonrpsee v0.16
      
      add backwards compatibility
      
      run old http server on http only
      
      * cargo fmt
      
      * update jsonrpsee 0.16.1
      
      * less verbose cors log
      
      * fix nit in log: WS -> HTTP
      
      * revert needless changes in Cargo.lock
      
      * remove unused features in tower
      
      * fix nits; add client-core feature
      
      * jsonrpsee v0.16.2
      84303ca7
  15. Oct 18, 2022
  16. Sep 01, 2022
  17. Jul 26, 2022
    • Sebastian Kunert's avatar
      Prepare for rust 1.62.1 (#11903) · 9f409dc0
      Sebastian Kunert authored
      
      
      * Update UI test output for rust 1.62.1
      
      * switch ci to staging image to check that everything works
      
      * fix artifacts node-bench-regression-guard
      
      * Imeplement `scale_info::TypeInfo` manually to silence aggressive rust warning
      
      * Fix more clippy lints
      
      * Make clippy happy by relying on auto-deref were possible
      
      * Add tracking issue to the comments
      
      * pin ci image
      
      Co-authored-by: default avataralvicsam <[email protected]>
      9f409dc0
  18. Apr 30, 2022
  19. Apr 27, 2022
    • Squirrel's avatar
      Updating shell.nix nightly (#11266) · 3ecb5306
      Squirrel authored
      
      
      * The 2022-02-10 nightly can't build some deps
      
      There's a sig that returns `impl IntoIterator<Item = (&'static str, OsString)>` and an Option is being retured but it's incorrectly not allowing a `?` in the method.
      
      * removing duplicate test
      
      * [ci] add job cargo-check-nixos
      
      * add dummy variables nix check
      
      * fix check-dependent jobs
      
      * fix check-dependent-project template
      
      Co-authored-by: default avataralvicsam <[email protected]>
      3ecb5306
  20. Apr 11, 2022
    • Bastian Köcher's avatar
      Prepare for rust stable 1.60 (#11138) · f517e57f
      Bastian Köcher authored
      
      
      * Prepare for rust stable 1.59
      
      Besides preparing the UI tests this also adds a new script update-rust-stable.sh script for
      simplifying the update of a rust stable version. This script will run all UI tests for the new
      rust stable version and updating the expected output.
      
      * Ensure we run the UI tests in CI
      
      * use staging ci image
      
      * More test updates
      
      * Unignore test (#11097)
      
      * empty commit for pipeline rerun
      
      * empty commit for pipeline rerun
      
      * Try to make clippy happy
      
      * More clippy fixes
      
      * FMT
      
      * ci image production
      
      Co-authored-by: default avataralvicsam <[email protected]>
      Co-authored-by: default avatarAlexander Samusev <[email protected]>
      f517e57f
  21. Mar 04, 2022
    • Kian Paimani's avatar
      Trie version migration pallet (#10073) · 6cfdbe5c
      Kian Paimani authored
      
      
      * starting
      
      * Updated from other branch.
      
      * setting flag
      
      * flag in storage struct
      
      * fix flagging to access and insert.
      
      * added todo to fix
      
      * also missing serialize meta to storage proof
      
      * extract meta.
      
      * Isolate old trie layout.
      
      * failing test that requires storing in meta when old hash scheme is used.
      
      * old hash compatibility
      
      * Db migrate.
      
      * runing tests with both states when interesting.
      
      * fix chain spec test with serde default.
      
      * export state (missing trie function).
      
      * Pending using new branch, lacking genericity on layout resolution.
      
      * extract and set global meta
      
      * Update to branch 4
      
      * fix iterator with root flag (no longer insert node).
      
      * fix trie root hashing of root
      
      * complete basic backend.
      
      * Remove old_hash meta from proof that do not use inner_hashing.
      
      * fix trie test for empty (force layout on empty deltas).
      
      * Root update fix.
      
      * debug on meta
      
      * Use trie key iteration that do not include value in proofs.
      
      * switch default test ext to use inner hash.
      
      * small integration test, and fix tx cache mgmt in ext.
      test  failing
      
      * Proof scenario at state-machine level.
      
      * trace for db upgrade
      
      * try different param
      
      * act more like iter_from.
      
      * Bigger batches.
      
      * Update trie dependency.
      
      * drafting codec changes and refact
      
      * before removing unused branch no value alt hashing.
      more work todo rename all flag var to alt_hash, and remove extrinsic
      replace by storage query at every storage_root call.
      
      * alt hashing only for branch with value.
      
      * fix trie tests
      
      * Hash of value include the encoded size.
      
      * removing fields(broken)
      
      * fix trie_stream to also include value length in inner hash.
      
      * triedbmut only using alt type if inner hashing.
      
      * trie_stream to also only use alt hashing type when actually alt hashing.
      
      * Refactor meta state, logic should work with change of trie treshold.
      
      * Remove NoMeta variant.
      
      * Remove state_hashed trigger specific functions.
      
      * pending switching to using threshold, new storage root api does not
      make much sense.
      
      * refactoring to use state from backend (not possible payload changes).
      
      * Applying from previous state
      
      * Remove default from storage, genesis need a special build.
      
      * rem empty space
      
      * Catch problem: when using triedb with default: we should not revert
      nodes: otherwhise thing as trie codec cannot decode-encode without
      changing state.
      
      * fix compilation
      
      * Right logic to avoid switch on reencode when default layout.
      
      * Clean up some todos
      
      * remove trie meta from root upstream
      
      * update upstream and fix benches.
      
      * split some long lines.
      
      * UPdate trie crate to work with new design.
      
      * Finish update to refactored upstream.
      
      * update to latest triedb changes.
      
      * Clean up.
      
      * fix executor test.
      
      * rust fmt from master.
      
      * rust format.
      
      * rustfmt
      
      * fix
      
      * start host function driven versioning
      
      * update state-machine part
      
      * still need access to state version from runtime
      
      * state hash in mem: wrong
      
      * direction likely correct, but passing call to code exec for genesis
      init seem awkward.
      
      * state version serialize in runtime, wrong approach, just initialize it
      with no threshold for core api < 4 seems more proper.
      
      * stateversion from runtime version (core api >= 4).
      
      * update trie, fix tests
      
      * unused import
      
      * clean some TODOs
      
      * Require RuntimeVersionOf for executor
      
      * use RuntimeVersionOf to resolve genesis state version.
      
      * update runtime version test
      
      * fix state-machine tests
      
      * TODO
      
      * Use runtime version from storage wasm with fast sync.
      
      * rustfmt
      
      * fmt
      
      * fix test
      
      * revert useless changes.
      
      * clean some unused changes
      
      * fmt
      
      * removing useless trait function.
      
      * remove remaining reference to state_hash
      
      * fix some imports
      
      * Follow chain state version management.
      
      * trie update, fix and constant threshold for trie layouts.
      
      * update deps
      
      * Update to latest trie pr changes.
      
      * fix benches
      
      * Verify proof requires right layout.
      
      * update trie_root
      
      * Update trie deps to  latest
      
      * Update to latest trie versioning
      
      * Removing patch
      
      * update lock
      
      * extrinsic for sc-service-test using layout v0.
      
      * Adding RuntimeVersionOf to CallExecutor works.
      
      * fmt
      
      * error when resolving version and no wasm in storage.
      
      * use existing utils to instantiate runtime code.
      
      * migration pallet
      
      * Patch to delay runtime switch.
      
      * Revert "Patch to delay runtime switch."
      
      This reverts commit 67e55fee468f1a0cda853f5362b22e0d775786da.
      
      * fix test
      
      * fix child migration calls.
      
      * useless closure
      
      * remove remaining state_hash variables.
      
      * Fix and add more tests
      
      * Remove outdated comment
      
      * useless inner hash
      
      * fmt
      
      * remote tests
      
      * finally ksm works
      
      * batches are broken
      
      * clean the benchmarks
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarGuillaume Thiolliere <[email protected]>
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarGuillaume Thiolliere <[email protected]>
      
      * Update frame/state-trie-migration/src/lib.rs
      
      Co-authored-by: default avatarJoshy Orndorff <[email protected]>
      
      * Update frame/state-trie-migration/src/lib.rs
      
      * brand new version
      
      * fix build
      
      * Update frame/state-trie-migration/src/lib.rs
      
      Co-authored-by: default avatarGuillaume Thiolliere <[email protected]>
      
      * Update frame/state-trie-migration/src/lib.rs
      
      Co-authored-by: default avatarGuillaume Thiolliere <[email protected]>
      
      * Update primitives/storage/src/lib.rs
      
      Co-authored-by: default avatarcheme <[email protected]>
      
      * Update frame/state-trie-migration/src/lib.rs
      
      Co-authored-by: default avatarcheme <[email protected]>
      
      * Update frame/state-trie-migration/src/lib.rs
      
      Co-authored-by: default avatarcheme <[email protected]>
      
      * fmt and opt-in feature to apply state change.
      
      * feature gate core version, use new test feature for node and test node
      
      * Use a 'State' api version instead of Core one.
      
      * fix merge of test function
      
      * use blake macro.
      
      * Fix state api (require declaring the api in runtime).
      
      * Opt out feature, fix macro for io to select a given version
      instead of latest.
      
      * run test nodes on new state.
      
      * fix
      
      * new test structure
      
      * new testing stuff from emeric
      
      * Add commit_all, still not working
      
      * Fix all tests
      
      * add comment
      
      * we have PoV tracking baby
      
      * document stuff, but proof size is still wrong
      
      * FUCK YEAH
      
      * a big batch of review comments
      
      * add more tests
      
      * tweak test
      
      * update config
      
      * some remote-ext stuff
      
      * delete some of the old stuff
      
      * sync more files with master to minimize the diff
      
      * Fix all tests
      
      * make signed migration a bit more relaxed
      
      * add witness check to signed submissions
      
      * allow custom migration to also go above limit
      
      * Fix these pesky tests
      
      * ==== removal of the unsigned stuff ====
      
      * Make all tests work again
      
      * separate the tests from the logic so it can be reused easier
      
      * fix overall build
      
      * Update frame/state-trie-migration/src/lib.rs
      
      Co-authored-by: default avatarcheme <[email protected]>
      
      * Update frame/state-trie-migration/src/lib.rs
      
      Co-authored-by: default avatarcheme <[email protected]>
      
      * Slightly better termination
      
      * some final tweaks
      
      * Fix tests
      
      * Restrict access to signed migrations
      
      * address most of the review comments
      
      * fix defensive
      
      * New simplified code
      
      * Fix weights
      
      * fmt
      
      * Update frame/state-trie-migration/src/lib.rs
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      
      * make the tests correctly fail
      
      * Fix build
      
      * Fix build
      
      * try and fix the benchmarks
      
      * fix build
      
      * Fix cargo file
      
      * Fix runtime deposit
      
      * make rustdoc happy
      
      * cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_state_trie_migration --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/state-trie-migration/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      Co-authored-by: default avatarcheme <[email protected]>
      Co-authored-by: default avatarGuillaume Thiolliere <[email protected]>
      Co-authored-by: default avatarJoshy Orndorff <[email protected]>
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      Co-authored-by: default avatarParity Bot <[email protected]>
      6cfdbe5c
  22. Jan 28, 2022
  23. Jan 03, 2022
  24. Dec 15, 2021
  25. Dec 04, 2021
  26. Nov 11, 2021
    • David's avatar
      Upgrade jsonrpsee to v0.4.1 (#10022) · eeb80f9e
      David authored
      
      
      * Upgrade jsonrpsee to v0.4.1
      
      * remove needless BlockT trait bound
      
      * use default wss port in URL
      
      * Fix try_runtime build
      
      * Partially fix for "remote-tests" feature
      
      * Review feedback
      
      * fmt
      
      * Sort out trait bounds for benches
      
      * Fmt
      
      * fmt again?
      
      * fmt with nightly-2021-09-13
      
      * Upgrade try-runtime as well
      
      * fmt
      
      Co-authored-by: default avatarNiklas Adolfsson <[email protected]>
      eeb80f9e
  27. Nov 09, 2021
  28. Nov 01, 2021
  29. Oct 13, 2021
  30. Sep 21, 2021
  31. Aug 19, 2021
    • Kian Paimani's avatar
      remove the uselsss weight return type from election provider API (#9569) · 7a32c350
      Kian Paimani authored
      
      
      * remove the uselsss weight return type from election provider API
      
      * fix everything, should be ready for final benchmark
      
      * simplify on_init a bit furhter
      
      * cargo run --quiet --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_election_provider_multi_phase --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/election-provider-multi-phase/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * cargo run --quiet --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_staking --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/staking/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * remove unwraps
      
      * fmt
      
      * Update lock file
      
      * whitelist block weight
      
      * cargo run --quiet --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_election_provider_multi_phase --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/election-provider-multi-phase/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * cargo run --quiet --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_staking --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/staking/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * fix warning
      
      Co-authored-by: default avatarParity Benchmarking Bot <[email protected]>
      7a32c350
  32. Aug 11, 2021
  33. Jul 22, 2021
  34. Jul 21, 2021
    • Bastian Köcher's avatar
      Run cargo fmt on the whole code base (#9394) · 7b56ab15
      Bastian Köcher authored
      * Run cargo fmt on the whole code base
      
      * Second run
      
      * Add CI check
      
      * Fix compilation
      
      * More unnecessary braces
      
      * Handle weights
      
      * Use --all
      
      * Use correct attributes...
      
      * Fix UI tests
      
      * AHHHHHHHHH
      
      * 🤦
      
      * Docs
      
      * Fix compilation
      
      * 🤷
      
      * Please stop
      
      * 🤦
      
       x 2
      
      * More
      
      * make rustfmt.toml consistent with polkadot
      
      Co-authored-by: default avatarAndré Silva <[email protected]>
      7b56ab15
  35. Jul 13, 2021
  36. Jun 22, 2021
  37. Jun 09, 2021
    • Zeke Mostov's avatar
      [try-runtime-cli] Offchain worker support (#8966) · f0120d3b
      Zeke Mostov authored
      
      
      * make remote-ext work with ws and safe RPCs
      
      * Update docs.
      
      * Update utils/frame/remote-externalities/Cargo.toml
      
      Co-authored-by: default avatarNiklas Adolfsson <[email protected]>
      
      * Fix test
      
      * Update lock file
      
      * Update utils/frame/remote-externalities/src/lib.rs
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      
      * Fix build again.
      
      * checkpoint, merging the paged rpc now
      
      * revert lifetime stuff
      
      * WIP: remote client init not working
      
      * Small cleanups
      
      * use jsonrpsee alpha.7
      
      * WIP
      
      * Executiing without errors
      
      * Reorg & cleanup
      
      * Trivial cleaning
      
      * Add txpool & keystore extension
      
      * Small cleaning
      
      * More :cleaning
      
      * Flags: page-size, override-code
      
      * WIP
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Remove heap_pages
      
      * Dry code extraction from state
      
      * Formatting
      
      * More formatting
      
      * Add issue todo
      
      * Use jsonrpsee 0.2.0
      
      * Try trigger gitlab
      
      * Fix "block_import_works" test
      
      * fix native_big_block_import_fails_on_fallback test
      
      * fix commit should work
      
      * Rewrite UI tests
      
      * Revert "Rewrite UI tests"
      
      This reverts commit ada7f670f701c21fb399946a3f6918453f537bcb.
      
      * try again with UI
      
      * Use const for legacy heap pages val
      
      * Move parse module to its own file
      
      * Move rpc_api module to its own file
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarPeter Goodspeed-Niklaus <[email protected]>
      
      * trait names: Block, not B
      
      * Corect HEAP_PAGES_TEST_LEGACY export
      
      * Update utils/frame/remote-externalities/src/rpc_api.rs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Revert test_ext heap_page insert; adjust storage root instead
      
      * Doc comments for try_runtime::cli::Command
      
      * TryRuntime stub
      
      * trailing comma
      
      * Remove unused dev dep in frame-executive
      
      * Improve parse::hash variable name & error index
      
      * Use Result for rpc_api fns
      
      * Richer err messagges
      
      * Remove HEAP_PAGE_TEST_LEGACY
      
      * Update bin/node/executor/tests/basic.rs
      
      Co-authored-by: default avatarkianenigma <[email protected]>
      Co-authored-by: default avatarKian Paimani <[email protected]>
      Co-authored-by: default avatarNiklas Adolfsson <[email protected]>
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      Co-authored-by: default avatarPeter Goodspeed-Niklaus <[email protected]>
      f0120d3b
  38. Jun 01, 2021