Skip to content
Snippets Groups Projects
  1. Mar 06, 2023
    • Liu-Cheng Xu's avatar
      Expose `new_full_parts_with_genesis_builder` from sc-service (#13539) · 58d1d9e1
      Liu-Cheng Xu authored
      I forgot this in https://github.com/paritytech/substrate/pull/12291
      58d1d9e1
    • Aaro Altonen's avatar
      Extract syncing protocol from `sc-network` (#12828) · 1a7f5be0
      Aaro Altonen authored
      
      * Move import queue out of `sc-network`
      
      Add supplementary asynchronous API for the import queue which means
      it can be run as an independent task and communicated with through
      the `ImportQueueService`.
      
      This commit removes removes block and justification imports from
      `sc-network` and provides `ChainSync` with a handle to import queue so
      it can import blocks and justifications. Polling of the import queue is
      moved complete out of `sc-network` and `sc_consensus::Link` is
      implemented for `ChainSyncInterfaceHandled` so the import queue
      can still influence the syncing process.
      
      * Move stuff to SyncingEngine
      
      * Move `ChainSync` instanation to `SyncingEngine`
      
      Some of the tests have to be rewritten
      
      * Move peer hashmap to `SyncingEngine`
      
      * Let `SyncingEngine` to implement `ChainSyncInterface`
      
      * Introduce `SyncStatusProvider`
      
      * Move `sync_peer_(connected|disconnected)` to `SyncingEngine`
      
      * Implement `SyncEventStream`
      
      Remove `SyncConnected`/`SyncDisconnected` events from
      `NetworkEvenStream` and provide those events through
      `ChainSyncInterface` instead.
      
      Modify BEEFY/GRANDPA/transactions protocol and `NetworkGossip` to take
      `SyncEventStream` object which they listen to for incoming sync peer
      events.
      
      * Introduce `ChainSyncInterface`
      
      This interface provides a set of miscellaneous functions that other
      subsystems can use to query, for example, the syncing status.
      
      * Move event stream polling to `SyncingEngine`
      
      Subscribe to `NetworkStreamEvent` and poll the incoming notifications
      and substream events from `SyncingEngine`.
      
      The code needs refactoring.
      
      * Make `SyncingEngine` into an asynchronous runner
      
      This commits removes the last hard dependency of syncing from
      `sc-network` meaning the protocol now lives completely outside of
      `sc-network`, ignoring the hardcoded peerset entry which will be
      addressed in the future.
      
      Code needs a lot of refactoring.
      
      * Fix warnings
      
      * Code refactoring
      
      * Use `SyncingService` for BEEFY
      
      * Use `SyncingService` for GRANDPA
      
      * Remove call delegation from `NetworkService`
      
      * Remove `ChainSyncService`
      
      * Remove `ChainSync` service tests
      
      They were written for the sole purpose of verifying that `NetworWorker`
      continues to function while the calls are being dispatched to
      `ChainSync`.
      
      * Refactor code
      
      * Refactor code
      
      * Update client/finality-grandpa/src/communication/tests.rs
      
      Co-authored-by: default avatarAnton <anton.kalyaev@gmail.com>
      
      * Fix warnings
      
      * Apply review comments
      
      * Fix docs
      
      * Fix test
      
      * cargo-fmt
      
      * Update client/network/sync/src/engine.rs
      
      Co-authored-by: default avatarAnton <anton.kalyaev@gmail.com>
      
      * Update client/network/sync/src/engine.rs
      
      Co-authored-by: default avatarAnton <anton.kalyaev@gmail.com>
      
      * Add missing docs
      
      * Refactor code
      
      ---------
      
      Co-authored-by: default avatarAnton <anton.kalyaev@gmail.com>
      1a7f5be0
  2. Feb 28, 2023
  3. 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
  4. Feb 20, 2023
    • Dmitry Markin's avatar
      Use async/await instead of manual polling of `NetworkWorker` (#13219) · 8d033b6d
      Dmitry Markin authored
      
      * Convert `NetworkWorker::poll()` into async `next_action()`
      
      * Use `NetworkWorker::next_action` instead of `poll` in `sc-network-test`
      
      * Revert "Use `NetworkWorker::next_action` instead of `poll` in `sc-network-test`"
      
      This reverts commit 4b5d851ec864f78f9d083a18a618fbe117c896d2.
      
      * Fix `sc-network-test` to poll `NetworkWorker::next_action`
      
      * Fix `sc_network::service` tests to poll `NetworkWorker::next_action`
      
      * Fix docs
      
      * kick CI
      
      * Factor out `next_worker_message()` & `next_swarm_event()`
      
      * Error handling: replace `futures::pending!()` with `expect()`
      
      * Simplify stream polling in `select!`
      
      * Replace `NetworkWorker::next_action()` with `run()`
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      
      * minor: comment
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      
      * Print debug log when network future is shut down
      
      * Evaluate `NetworkWorker::run()` future once before the loop
      
      * Fix client code to match new `NetworkService` interfaces
      
      * Make clippy happy
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      
      * Revert "Apply suggestions from code review"
      
      This reverts commit 9fa646d0ed613e5f8623d3d37d1d59ec0a535850.
      
      * Make `NetworkWorker::run()` consume `self`
      
      * Terminate system RPC future if RPC rx stream has terminated.
      
      * Rewrite with let-else
      
      * Fix comments
      
      * Get `best_seen_block` and call `on_block_finalized` via `ChainSync` instead of `NetworkService`
      
      * rustfmt
      
      * make clippy happy
      
      * Tests: schedule wake if `next_action()` returned true
      
      * minor: comment
      
      * minor: fix `NetworkWorker` rustdoc
      
      * minor: amend the rustdoc
      
      * Fix bug that caused `on_demand_beefy_justification_sync` test to hang
      
      * rustfmt
      
      * Apply review suggestions
      
      ---------
      
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      8d033b6d
  5. Feb 14, 2023
  6. Dec 28, 2022
    • Bastian Köcher's avatar
      Print "stalled" task on shutdown (#13022) · 0a94112c
      Bastian Köcher authored
      * Print "stalled" task on shutdown
      
      When the node is shutting down, we give the Tokio runtime 60 seconds to shutdown. If after these 60
      seconds there are still running tasks, we now print these tasks. This should help debugging nodes
      that have stalled tasks.
      
      This pr introduces a `TaskRegistry` that keeps track of all running tasks. Each task registers and
      unregisters itself in this `TaskRegistry`.
      
      * Fix rustdoc
      
      * Update client/service/src/lib.rs
      0a94112c
  7. Dec 19, 2022
    • Liu-Cheng Xu's avatar
      Support custom genesis block (#12291) · b92aa3db
      Liu-Cheng Xu authored
      * Set genesis block data using the built genesis block
      
      * Make resolve_state_version_from_wasm a separate function and some small refactorings
      
      Useful for the commit following.
      
      * Introduce trait BuildGenesisBlock
      
      Substrate users can use this trait to implement their custom genesis block when constructing the
      client.
      
      * Make call_executor test compile
      
      * cargo +nightly fmt --all
      
      * Fix test
      
      * Remove unnecessary clone
      
      * FMT
      
      * Apply review suggestions
      
      * Revert changes to new_full_client() and new_full_parts() signature
      
      * Remove needless `Block` type in `resolve_state_version_from_wasm`
      b92aa3db
  8. Dec 12, 2022
    • 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
  9. Sep 26, 2022
  10. Aug 29, 2022
  11. Aug 09, 2022
    • Nazar Mokrynskyi's avatar
      Network sync refactoring (part 6) (#11940) · a685582b
      Nazar Mokrynskyi authored
      * Extract `NetworkKVProvider` trait in `sc-authority-discovery` and remove unnecessary dependency
      
      * Extract `NetworkSyncForkRequest` trait in `sc-finality-grandpa`
      
      * Relax requirements on `SyncOracle` trait, remove extra native methods from `NetworkService` that are already provided by trait impls
      
      * Move `NetworkSigner` trait from `sc-authority-discovery` into `sc-network-common` and de-duplicate methods on `NetworkService`
      
      * Move `NetworkKVProvider` trait from `sc-authority-discovery` into `sc-network-common` and de-duplicate methods on `NetworkService`
      
      * Minimize `sc-authority-discovery` dependency on `sc-network`
      
      * Move `NetworkSyncForkRequest` trait from `sc-finality-grandpa` to `sc-network-common` and de-duplicate methods in `NetworkService`
      
      * Extract `NetworkStatusProvider` trait and de-duplicate methods on `NetworkService`
      
      * Extract `NetworkPeers` trait and de-duplicate methods on `NetworkService`
      
      * Extract `NetworkEventStream` trait and de-duplicate methods on `NetworkService`
      
      * Move more methods from `NetworkService` into `NetworkPeers` trait
      
      * Move `NetworkStateInfo` trait into `sc-network-common`
      
      * Extract `NetworkNotification` trait and de-duplicate methods on `NetworkService`
      
      * Extract `NetworkRequest` trait and de-duplicate methods on `NetworkService`
      
      * Remove `NetworkService::local_peer_id()`, it is already provided by `NetworkStateInfo` impl
      
      * Extract `NetworkTransaction` trait and de-duplicate methods on `NetworkService`
      
      * Extract `NetworkBlock` trait and de-duplicate methods on `NetworkService`
      
      * Remove dependencies on `NetworkService` from most of the methods of `sc-service`
      
      * Address simple review comments
      a685582b
  12. Aug 08, 2022
  13. Aug 05, 2022
    • Bastian Köcher's avatar
      system_syncState: Always return highest block (#11979) · a3144848
      Bastian Köcher authored
      Before `highestBlock` was an optional that was omitted when it was `None`. We recently changed the
      way the `highestBlock` is determined, this resulted in having this value in 99.99% of the time being
      `None` when the node is syncing blocks at the tip. Now we always return a block for `highestBlock`.
      If sync doesn't return us any best seen block, we return our own local best block as `highestBlock`.
      This should mainly reflect the same behavior to before we changed the way the best seen block is determined.
      a3144848
  14. Aug 02, 2022
  15. Jul 21, 2022
  16. May 21, 2022
  17. May 10, 2022
    • David's avatar
      jsonrpsee integration (#8783) · 29c0c6a4
      David authored
      
      * Add tokio
      
      * No need to map CallError to CallError
      
      * jsonrpsee proc macros (#9673)
      
      * port error types to `JsonRpseeError`
      
      * migrate chain module to proc macro api
      
      * make it compile with proc macros
      
      * update branch
      
      * update branch
      
      * update to jsonrpsee master
      
      * port system rpc
      
      * port state rpc
      
      * port childstate & offchain
      
      * frame system rpc
      
      * frame transaction payment
      
      * bring back CORS hack to work with polkadot UI
      
      * port babe rpc
      
      * port manual seal rpc
      
      * port frame mmr rpc
      
      * port frame contracts rpc
      
      * port finality grandpa rpc
      
      * port sync state rpc
      
      * resolve a few TODO + no jsonrpc deps
      
      * Update bin/node/rpc-client/src/main.rs
      
      * Update bin/node/rpc-client/src/main.rs
      
      * Update bin/node/rpc-client/src/main.rs
      
      * Update bin/node/rpc-client/src/main.rs
      
      * Port over system_ rpc tests
      
      * Make it compile
      
      * Use prost 0.8
      
      * Use prost 0.8
      
      * Make it compile
      
      * Ignore more failing tests
      
      * Comment out WIP tests
      
      * fix nit in frame system api
      
      * Update lockfile
      
      * No more juggling tokio versions
      
      * No more wait_for_stop ?
      
      * Remove browser-testing
      
      * Arguments must be arrays
      
      * Use same argument names
      
      * Resolve todo: no wait_for_stop for WS server
      Add todo: is parse_rpc_result used?
      Cleanup imports
      
      * fmt
      
      * log
      
      * One test passes
      
      * update jsonrpsee
      
      * update jsonrpsee
      
      * cleanup rpc-servers crate
      
      * jsonrpsee: add host and origin filtering (#9787)
      
      * add access control in the jsonrpsee servers
      
      * use master
      
      * fix nits
      
      * rpc runtime_version safe
      
      * fix nits
      
      * fix grumbles
      
      * remove unused files
      
      * resolve some todos
      
      * jsonrpsee more cleanup (#9803)
      
      * more cleanup
      
      * resolve TODOs
      
      * fix some unwraps
      
      * remove type hints
      
      * update jsonrpsee
      
      * downgrade zeroize
      
      * pin jsonrpsee rev
      
      * remove unwrap nit
      
      * Comment out more tests that aren't ported
      
      * Comment out more tests
      
      * Fix tests after merge
      
      * Subscription test
      
      * Invalid nonce test
      
      * Pending exts
      
      * WIP removeExtrinsic test
      
      * Test remove_extrinsic
      
      * Make state test: should_return_storage work
      
      * Uncomment/fix the other non-subscription related state tests
      
      * test: author_insertKey
      
      * test: author_rotateKeys
      
      * Get rest of state tests passing
      
      * asyncify a little more
      
      * Add todo to note #msg change
      
      * Crashing test for has_session_keys
      
      * Fix error conversion to avoid stack overflows
      Port author_hasSessionKeys test
      fmt
      
      * test author_hasKey
      
      * Add two missing tests
      Add a check on the return type
      Add todos for James's concerns
      
      * RPC tests for state, author and system (#9859)
      
      * Fix test runner
      
      * Impl Default for SubscriptionTaskExecutor
      
      * Keep the minimul amount of code needed to compile tests
      
      * Re-instate `RpcSession` (for now)
      
      * cleanup
      
      * Port over RPC tests
      
      * Add tokio
      
      * No need to map CallError to CallError
      
      * Port over system_ rpc tests
      
      * Make it compile
      
      * Use prost 0.8
      
      * Use prost 0.8
      
      * Make it compile
      
      * Ignore more failing tests
      
      * Comment out WIP tests
      
      * Update lockfile
      
      * No more juggling tokio versions
      
      * No more wait_for_stop ?
      
      * Remove browser-testing
      
      * Arguments must be arrays
      
      * Use same argument names
      
      * Resolve todo: no wait_for_stop for WS server
      Add todo: is parse_rpc_result used?
      Cleanup imports
      
      * fmt
      
      * log
      
      * One test passes
      
      * Comment out more tests that aren't ported
      
      * Comment out more tests
      
      * Fix tests after merge
      
      * Subscription test
      
      * Invalid nonce test
      
      * Pending exts
      
      * WIP removeExtrinsic test
      
      * Test remove_extrinsic
      
      * Make state test: should_return_storage work
      
      * Uncomment/fix the other non-subscription related state tests
      
      * test: author_insertKey
      
      * test: author_rotateKeys
      
      * Get rest of state tests passing
      
      * asyncify a little more
      
      * Add todo to note #msg change
      
      * Crashing test for has_session_keys
      
      * Fix error conversion to avoid stack overflows
      Port author_hasSessionKeys test
      fmt
      
      * test author_hasKey
      
      * Add two missing tests
      Add a check on the return type
      Add todos for James's concerns
      
      * offchain rpc tests
      
      * Address todos
      
      * fmt
      
      Co-authored-by: default avatarJames Wilson <james@jsdw.me>
      
      * fix drop in state test
      
      * update jsonrpsee
      
      * fix ignored system test
      
      * fix chain tests
      
      * remove some boiler plate
      
      * Port BEEFY RPC (#9883)
      
      * Merge master
      
      * Port beefy RPC (ty @niklas!)
      
      * trivial changes left over from merge
      
      * Remove unused code
      
      * Update jsonrpsee
      
      * fix build
      
      * make tests compile again
      
      * beefy update jsonrpsee
      
      * fix: respect rpc methods policy
      
      * update cargo.lock
      
      * update jsonrpsee
      
      * update jsonrpsee
      
      * downgrade error logs
      
      * update jsonrpsee
      
      * Fix typo
      
      * remove unused file
      
      * Better name
      
      * Port Babe RPC tests
      
      * Put docs back
      
      * Resolve todo
      
      * Port tests for System RPCs
      
      * Resolve todo
      
      * fix build
      
      * Updated jsonrpsee to current master
      
      * fix: port finality grandpa rpc tests
      
      * Move .into() outside of the match
      
      * more review grumbles
      
      * jsonrpsee: add `rpc handlers` back (#10245)
      
      * add back RpcHandlers
      
      * cargo fmt
      
      * fix docs
      
      * fix grumble: remove needless alloc
      
      * resolve TODO
      
      * fmt
      
      * Fix typo
      
      * grumble: Use constants based on BASE_ERROR
      
      * grumble: DRY whitelisted listening addresses
      grumble: s/JSONRPC/JSON-RPC/
      
      * cleanup
      
      * grumbles: Making readers aware of the possibility of gaps
      
      * review grumbles
      
      * grumbles
      
      * remove notes from niklasad1
      
      * Update `jsonrpsee`
      
      * fix: jsonrpsee features
      
      * jsonrpsee: fallback to random port in case the specified port failed (#10304)
      
      * jsonrpsee: fallback to random port
      
      * better comment
      
      * Update client/rpc-servers/src/lib.rs
      
      Co-authored-by: default avatarMaciej Hirsz <1096222+maciejhirsz@users.noreply.github.com>
      
      * Update client/rpc-servers/src/lib.rs
      
      Co-authored-by: default avatarMaciej Hirsz <1096222+maciejhirsz@users.noreply.github.com>
      
      * address grumbles
      
      * cargo fmt
      
      * addrs already slice
      
      Co-authored-by: default avatarMaciej Hirsz <1096222+maciejhirsz@users.noreply.github.com>
      
      * Update jsonrpsee to 092081a0a2b8904c6ebd2cd99e16c7bc13ffc3ae
      
      * lockfile
      
      * update jsonrpsee
      
      * fix warning
      
      * Don't fetch jsonrpsee from crates
      
      * make tests compile again
      
      * fix rpc tests
      
      * remove unused deps
      
      * update tokio
      
      * fix rpc tests again
      
      * fix: test runner
      
      `HttpServerBuilder::builder` fails unless it's called within tokio runtime
      
      * cargo fmt
      
      * grumbles: fix subscription aliases
      
      * make clippy happy
      
      * update remaining subscriptions alias
      
      * cleanup
      
      * cleanup
      
      * fix chain subscription: less boiler plate (#10285)
      
      * fix chain subscription: less boiler plate
      
      * fix bad merge
      
      * cargo fmt
      
      * Switch to jsonrpsee 0.5
      
      * fix build
      
      * add missing features
      
      * fix nit: remove needless Box::pin
      
      * Integrate jsonrpsee metrics (#10395)
      
      * draft metrics impl
      
      * Use latest api
      
      * Add missing file
      
      * Http server metrics
      
      * cleanup
      
      * bump jsonrpsee
      
      * Remove `ServerMetrics` and use a single middleware for both connection counting (aka sessions) and call metrics.
      
      * fix build
      
      * remove needless Arc::clone
      
      * Update to jsonrpsee 0.6
      
      * lolz
      
      * fix metrics
      
      * Revert "lolz"
      
      This reverts commit eed6c6a56e78d8e307b4950f4c52a1c3a2322ba1.
      
      * fix: in-memory rpc support subscriptions
      
      * commit Cargo.lock
      
      * Update tests to 0.7
      
      * fix TODOs
      
      * ws server: generate subscriptionIDs as Strings
      
      Some libraries seems to expect the subscription IDs to be Strings, let's not break
      this in this PR.
      
      * Increase timeout
      
      * Port over tests
      
      * cleanup
      
      * Using error codes from the spec
      
      * fix clippy
      
      * cargo fmt
      
      * update jsonrpsee
      
      * fix nits
      
      * fix: rpc_query
      
      * enable custom subid gen through spawn_tasks
      
      * remove unsed deps
      
      * unify tokio deps
      
      * Revert "enable custom subid gen through spawn_tasks"
      
      This reverts commit 5c5eb70328fe39d154fdb55c56e637b4548cf470.
      
      * fix bad merge of `test-utils`
      
      * fix more nits
      
      * downgrade wasm-instrument to 0.1.0
      
      * [jsonrpsee]: enable custom RPC subscription ID generatation (#10731)
      
      * enable custom subid gen through spawn_tasks
      
      * fix nits
      
      * Update client/service/src/builder.rs
      
      Co-authored-by: default avatarDavid <dvdplm@gmail.com>
      
      * add Poc; needs jsonrpsee pr
      
      * update jsonrpsee
      
      * add re-exports
      
      * add docs
      
      Co-authored-by: default avatarDavid <dvdplm@gmail.com>
      
      * cargo fmt
      
      * fmt
      
      * port RPC-API dev
      
      * Remove unused file
      
      * fix nit: remove async trait
      
      * fix doc links
      
      * fix merge nit: remove jsonrpc deps
      
      * kill namespace on rpc apis
      
      * companion for jsonrpsee v0.10 (#11158)
      
      * companion for jsonrpsee v0.10
      
      * update versions v0.10.0
      
      * add some fixes
      
      * spelling
      
      * fix spaces
      
      Co-authored-by: default avatarNiklas Adolfsson <niklasadolfsson1@gmail.com>
      
      * send error before subs are closed
      
      * fix unsubscribe method names: chain
      
      * fix tests
      
      * jsonrpc server: print binded local address
      
      * grumbles: kill SubscriptionTaskExecutor
      
      * Update client/sync-state-rpc/src/lib.rs
      
      Co-authored-by: default avatarBastian Köcher <bkchr@users.noreply.github.com>
      
      * Update client/rpc/src/chain/chain_full.rs
      
      Co-authored-by: default avatarBastian Köcher <bkchr@users.noreply.github.com>
      
      * Update client/rpc/src/chain/chain_full.rs
      
      Co-authored-by: default avatarBastian Köcher <bkchr@users.noreply.github.com>
      
      * sync-state-rpc: kill anyhow
      
      * no more anyhow
      
      * remove todo
      
      * jsonrpsee:  fix bad params in subscriptions. (#11251)
      
      * update jsonrpsee
      
      * fix error responses
      
      * revert error codes
      
      * dont do weird stuff in drop impl
      
      * rpc servers: remove needless clone
      
      * Remove silly constants
      
      * chore: update jsonrpsee v0.12
      
      * commit Cargo.lock
      
      * deps: downgrade git2
      
      * feat: CLI flag max subscriptions per connection
      
      * metrics: use old logging format
      
      * fix: read WS address from substrate output (#11379)
      
      Co-authored-by: default avatarNiklas Adolfsson <niklasadolfsson1@gmail.com>
      Co-authored-by: default avatarJames Wilson <james@jsdw.me>
      Co-authored-by: default avatarMaciej Hirsz <hello@maciej.codes>
      Co-authored-by: default avatarMaciej Hirsz <1096222+maciejhirsz@users.noreply.github.com>
      Co-authored-by: default avatarBastian Köcher <bkchr@users.noreply.github.com>
      29c0c6a4
  18. Apr 30, 2022
  19. Apr 29, 2022
    • Nazar Mokrynskyi's avatar
      Network sync refactoring (part 1) (#11303) · af6773ab
      Nazar Mokrynskyi authored
      * Remove unnecessary imports, move one internal re-export into where it is actually used, make one import explicit
      
      * Move a few data structures down into modules
      
      * Use generic parameters in `sc-network` instead of `chain::Client` trait
      
      * Remove unnecessary bound
      af6773ab
  20. Mar 04, 2022
  21. Feb 09, 2022
    • Koute's avatar
      Add a new host function for reporting fatal errors; make WASM backtraces... · 9a31b2c3
      Koute authored
      Add a new host function for reporting fatal errors; make WASM backtraces readable when printing out errors (#10741)
      
      * Add a new host function for reporting fatal errors
      
      * Fix one of the wasmtime executor tests
      
      * Have `#[runtime_interface(wasm_only)]` actually mean WASM-only, and not no_std-only
      
      * Print out errors through `Display` instead of `Debug`
      
      * Switch one more trait to require `Error` for its error instead of only `Debug`
      
      * Align to review comments
      9a31b2c3
  22. Jan 27, 2022
    • Davide Galassi's avatar
      Add stale branches heads to finality notifications (#10639) · 7f3bb8d0
      Davide Galassi authored
      
      * Add stale branches heads to finality notifications
      
      Warning. Previous implementation was sending a notification for
      each block between the previous (explicitly) finalized block and
      the new finalized one (with an hardcoded limit of 256).
      
      Now finality notification is sent only for the new finalized head and it
      contains the hash of the new finalized head, new finalized head header,
      a list of all the implicitly finalized blocks and a list of stale
      branches heads (i.e. the branches heads that are not part of the
      canonical chain anymore).
      
      * Add implicitly finalized blocks list to `ChainEvent::Finalized` message
      
      The list contains all the blocks between the previously finalized block
      up to the parent of the currently finalized one, sorted by block number.
      
      `Finalized` messages handler, part of the `MaintainedTransactionPool`
      implementation for `BasicPool`, still propagate full set of finalized
      blocks to the txpool by iterating over implicitly finalized blocks list.
      
      * Rust fmt
      
      * Greedy evaluation of `stale_heads` during finalization
      
      * Fix outdated assumption in a comment
      
      * Removed a test optimization that is no more relevant
      
      The loop was there to prevent sending to
      `peer.network.on_block_finalized` the full list of finalized blocks.
      
      Now only the finalized heads are received.
      
      * Last finalized block lookup not required anymore
      
      * Tests for block finality notifications payloads
      
      * Document a bit tricky condition to avoid duplicate finalization notifications
      
      * More idiomatic way to skip an iterator entry
      
      Co-authored-by: default avatarBastian Köcher <bkchr@users.noreply.github.com>
      
      * Cargo fmt iteration
      
      * Typo fix
      
      Co-authored-by: default avatarBastian Köcher <bkchr@users.noreply.github.com>
      
      * Fix potential failure when a finalized orphan block is imported
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarBastian Köcher <bkchr@users.noreply.github.com>
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarBastian Köcher <bkchr@users.noreply.github.com>
      
      Co-authored-by: default avatarBastian Köcher <bkchr@users.noreply.github.com>
      7f3bb8d0
  23. Jan 03, 2022
  24. Dec 13, 2021
  25. Nov 12, 2021
  26. Nov 11, 2021
  27. Nov 01, 2021
  28. Oct 30, 2021
  29. Oct 14, 2021
  30. Sep 12, 2021
    • Bastian Köcher's avatar
      Use tokio runtime handle instead of `TaskExecutor` abstraction (#9737) · c09d52ea
      Bastian Köcher authored
      * Use tokio runtime handle instead of TaskExecutor abstraction
      
      Before this pr we had the `TaskExecutor` abstraction which theoretically
      allowed that any futures executor could have been used. However, this
      was never tested and is currently not really required. Anyone running a
      node currently only used tokio and nothing else (because this was hard
      coded in CLI). So, this pr removes the `TaskExecutor` abstraction and
      relies directly on the tokio runtime handle.
      
      Besides this changes, this pr also makes sure that the http and ws rpc
      server use the same tokio runtime. This fixes a panic that occurred when
      you drop the rpc servers inside an async function (tokio doesn't like
      that a tokio runtime is dropped in the async context of another tokio
      runtime).
      
      As we don't use any custom runtime in the http rpc server anymore, this
      pr also removes the `rpc-http-threads` cli argument. If external parties
      complain that there aren't enough threads for the rpc server, we could
      bring support for increasing the thread count of the tokio runtime.
      
      * FMT
      
      * Fix try runtime
      
      * Fix integration tests and some other optimizations
      
      * Remove warnings
      c09d52ea
  31. Sep 09, 2021
  32. Sep 04, 2021
  33. Aug 24, 2021
  34. Aug 13, 2021
    • Bastian Köcher's avatar
      Upgrade jsonrpc to 0.18.0 (#9547) · c44aba89
      Bastian Köcher authored
      * Upgrade jsonrpc to 0.18.0
      
      I think this says all :P
      
      * :face_palm:
      
      * Fmt etc
      
      * Fix tests
      
      * Fix tests again...
      
      * Better impl
      
      * Revert "Tell dependabot to ignore jsonrpc-* updates (#9518)"
      
      This reverts commit 6e0cd558.
      c44aba89
  35. Aug 11, 2021
  36. Aug 09, 2021
    • Marek Kotewicz's avatar
      DatabaseSource::Auto (#9500) · a2f75241
      Marek Kotewicz authored
      * implement "auto" database backend in client/db, in progress, #9201
      
      * move fn supports_ref_counting from DatabaseSource enum to Database trait to make it work correctly for all types of dbs
      
      * update kvdb_rocksdb to 0.13 and use it's new config feature  to properly auto start existing database
      
      * tests for auto database reopening
      
      * introduce OpenDbError to cleanup opening database error handling and handle case when database is not enabled at the compile time
      
      * cargo fmt strings again
      
      * cargo fmt strings again
      
      * rename DataSettingsSrc to fix test compilation
      
      * fix the call to the new kvdb-rocksdb interdace in tests to fix compilation
      
      * simplify OpenDbError and make it compile even when paritydb and rocksdb are disabled
      
      * cargo fmt
      
      * fix compilation without flag with-parity-db
      
      * fix unused var compilation warning
      
      * support different paths for rocksdb and paritydb in DatabaseSouce::Auto
      
      * support "auto" database option in substrate cli
      
      * enable Lz4 compression for some of the parity-db colums as per review suggestion
      
      * applied review suggestions
      a2f75241
  37. Aug 04, 2021
    • Bastian Köcher's avatar
      Decouples light-sync state from chain spec (#9491) · 6e4d30e8
      Bastian Köcher authored
      * Decouples light-sync state from chain spec
      
      This decouples the light-sync state from chain spec. First, the
      light-sync state currently only works with BABE+Grandpa, so not
      all *Substrate* based chains can use this feature. The next problem was
      also that this pulled the `sc-consensus-babe` and `sc-finality-grandpa`
      crate into `sc-chain-spec`.
      
      If a chain now wants to support the light-sync state, it needs to add
      the `LightSyncStateExtension` to the chain spec as an extension. This is
      documented in the crate level docs of `sc-sync-state-rpc`. If this
      extension is not available, `SyncStateRpc` fails at initialization.
      
      * Fix compilation for browser
      
      * Fmt
      6e4d30e8