* Add span recording to tracing implementation
* Add tracing proxy
* switch to rustc_hash::FxHashMap
* Replace lazy_static and hashmap with thread_local and vec.
* fix marking valid span as invalid while removing invalid spans
* refactor, add wasm_tracing module in `support`
* update registered spans
* tidy up
* typos
* refactor
* update flag name to signal lost trace - `is_valid_trace`
* update flag name to signal lost trace - `is_valid_trace`
* update docs
* update docs
* Use tracing Field recording to store the actual `name` and `target`
from wasm traces.
* fix debug log in subscriber + small refactor
* add tests
* handle misuse in case trying to exit span not held
* Implement filter for wasm traces, simplify field recording for primitive types
* remove superfluous warning
* update docs
* Update primitives/tracing/src/proxy.rs
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* update docs, apply suggestions
* move Proxy from thread_local to `Extension`, rename macro
* fix test
* unify native & wasm span macro calls
* implement wasm tracing control facility in primitives and frame
* add cli flag `--wasm-tracing`
* fix
* switch to `Option<u4>` (possible performance degradation), switch
to static mut bool
* performance improvement using u64 vs Option<u64>
* performance improvement moving concat to client
* update docs
* Update client/cli/src/params/import_params.rs
Co-authored-by: Cecile Tonglet <cecile@parity.io>
* performance improvement
* Revert "performance improvement"
This reverts commit 55ff8817a86302cd93bb6197eb4ca5bc7f4fb524.
* small refactor
* formatting
* bump impl_version
* Update client/cli/src/config.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* update docs
* small fixes, remove pub static
* nit
* add integration tests and refactor Subscriber
* tests
* revert formatting
* try fix test that works locally but not in CI
* try fix test that works locally but not in CI
* debug test that works locally but not in CI
* fix test that works locally but not in CI
* remove pub visibility from bool in runtime
* make TracingSpanGuard #[cfg(not(feature = "std"))], update docs, comments
* make TracingProxy drop implementation conditional on !empty state
* add docs for TraceHandler
* remove blank line
* update expect message
* update tests
* rename cli option to tracing_enable_wasm
* rename cli option to tracing_enable_wasm
* fix
* ensure wasm-tracing features are wasm only
* bump impl_version
* bump impl_version
* add `"pallet-scheduler/std"` to `[features]` `std` in node/runtime
* refactor service to remove sp_tracing dependency
* refactor: line width, trait bounds
* improve LogTraceHandler output
* fix test
* improve tracing log output
* Apply suggestions from code review
* Apply suggestions from code review
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* swap wasm indication from trace name to a separate value
* Update client/tracing/src/lib.rs
* add docs
* remove runtime features
remove wasm_tracing option from CLI
remove wasm_tracing flag from ProfilingSubscriber
Co-authored-by: Matt Rutherford <mattrutherford@users.noreply.github.com>
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
Co-authored-by: Cecile Tonglet <cecile@parity.io>
* client/authority-discovery: Don't add own address to priority group
In the scenario of a validator publishing the address of its sentry node
to the DHT, said sentry node should not add its own Multiaddr to the
peerset "authority" priority group.
Related to 273f31b.
* client/authority-discovery: Remove unused import PeerId
* client/authority-discovery/tests: Add tcp protocol to multiaddresses
* Seperate out the complexity in ServiceBuilder::build_common into seperate functions
* Fix line widths
* Move some functions to their respective crates
This pr fixes a bug with the transaction pool not sending certain events
like finalized and also fixes the order of events. The problem with the
finalized event was that we did not extracted pruned extrinsics if there
were not ready transactions in the pool. However this is wrong, if we
have a re-org, a tx is clearly not ready anymore and we still need to
send a pruned event for it because it is in a new block included. This
also lead to sending "ready" events and tx being re-validated. The
listener also only send the "finalized" event if it has seen a block as
being included, which did not happen before with the old code.
The second fix of the pr is the order of events. If we prune and retract the
same transaction in the same block, we first need to send the "retract"
event and after that the "pruned" event, because finalization takes
longer and this would lead to the UI showing "retract" while it actually
is included.
* client: use appropriate ExecutionContext for sync/import
* client: remove dead code
* client: ExecutionContext: distinguish between own and foreign imports
* client: fix cli parameter doc
* Revert "client: ExecutionContext: distinguish between own and foreign imports"
This reverts commit 0fac11520704c364a82432c5b927e987ba043cdb.
* primitives: add docs for ExecutionContext
* cli: execution strategy docs
* cli: use different execution context for importing block on validator
* cli: remove defaults from execution context flags
* transaction-pool: expose blocking api for tx submission
* service: separate ServiceBuilder::build for full and light
* service: add ServiceBuilder::build_common
* transaction-pool: extend docs
Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
When a peer in `Incoming` state disconnects, the "alive" entry
in the `incoming` list for that peer must be updated (set to `false`).
Currently the entry that is updated may be an earlier entry for the
same peer that is already no longer alive. This can happen if a
peer repeatedly connects (incoming) and disconnects between invocations to
`poll()` of the behaviour.
* Ensure authority discovery avoids self-lookups.
Thereby additionally guard the `NetworkService` against
adding the local peer to the PSM or registering a
"known address" for the local peer.
* Clarify comments.
* See if returning errors is ok.
* Make NumberOrHex a common primitive.
* Update primitives/rpc/src/number.rs
Co-authored-by: Nikolay Volf <nikvolf@gmail.com>
Co-authored-by: Nikolay Volf <nikvolf@gmail.com>
* fix (ci): hotfix Docker release
* change (ci): moving to the tested CI image with a proper name
* change (ci): rename substrate-ci-linux
* Reduce the lots_of_incoming_peers_works test load (#6314)
* change (ci): moving to the tested CI image with a proper name
* change (ci): rename substrate-ci-linux
* Reduce the lots_of_incoming_peers_works test load (#6314)
Co-authored-by: Bastian Köcher <git@kchr.de>
Co-authored-by: Pierre Krieger <pierre.krieger1708@gmail.com>
* Use sign_with and stop using `Pair`
* PR feedback
* Remove clone
* Transfer ownership of public to sign_message
* Use Option
* Simplify code
* Fix error message
* Pass keystore as ref
* Pass keystore properly
* Fix tests
* Bump jsonrpc pubsub, core, http, and ws
Right now these are the packages which _need_ to be updated
so I can just the latest `jsonrpc-pubsub` code. Once a release
it cut upstream the rest of the dependencies should be updated
as well.
* Use jsonrpc-pubsub's SubscriptionManager
This places sc-rpc-api::Subscriptions
* Bump jsonrpc-core outside of sc-rpc-*
* Update client/rpc tests
Right now one of the `author` tests is failing, I
need to think a bit about how best to fix it.
* Remove Subscriptions manager
There's no need for this implementation since we're
using the one from `jsonrpc-pubsub` now
* Fix author RPC test
This test used to check for a numerial subscription ID,
whereas now it uses a string based ID which is the default
provided by `jsonrpc-pubsub`'s subscription manager.
* Remove unused NumericIdProvider
* Add missing bracket
Removed one too many with that last one, lol
* Bump `jsonrpc` to v14.2
There's an exception though. `jsonrpc-derive` cannot be bumped
past v14.0.5 just yet since it has a dependency on `quote` pinned
to v1.0.1. This means that at the moment it won't build on Substrate
since it's using v1.0.3.
* Track `jsonrpc-derive` master branch
* Bump `quote` version to v1.0.6
* Bump `jsonrpc-derive` to v14.2.1
This includes support for `quote` v1.0.6
* Use exact version for jsonrpc crates
Doing this to make sure any updates in jsonrpc don't
accidently trickle down to Polkadot.
Co-authored-by: André Silva <andre.beat@gmail.com>
* make all features explicit
* Change to -feature suffix to with- prefix
* Add newline at the end of the Cargo.toml file
* Remove rhd feature
* Remove some features from Cargo.toml
* Remove test-helpers feature in tx pool
* Return db_open_error("with-"..
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Rename subdb feature to with-subdb
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Remove 'strict' feature and cfg_attr
* Check for with-subdb feature instead of subdb
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
The `tree_route` generated by the import notification is only from the
old best block to the new best parent. This means, it does not contain
the new best block in `enacted()`. We need to prune the transactions of
the new best block "manually" to fix this bug.
Besides that, this pr also changed the `id` parameter of the `NewBlock`
chain event to `hash`. The hash of a block is unique in contrast to the
block number. (Block id can either be number or hash)
* Make tx pool aware of retracted fork blocks
* Make it compile
* Update client/transaction-pool/src/lib.rs
Co-authored-by: Nikolay Volf <nikvolf@gmail.com>
* Fix doc test
* Simplify the implementation
* Send tree route as arc to prevent heavy clones
* Switch to use `ExtrinsicHash` to make it more clear
* Fix benchmark
Co-authored-by: Nikolay Volf <nikvolf@gmail.com>
* Bump jsonrpc pubsub, core, http, and ws
Right now these are the packages which _need_ to be updated
so I can just the latest `jsonrpc-pubsub` code. Once a release
it cut upstream the rest of the dependencies should be updated
as well.
* Use jsonrpc-pubsub's SubscriptionManager
This places sc-rpc-api::Subscriptions
* Bump jsonrpc-core outside of sc-rpc-*
* Update client/rpc tests
Right now one of the `author` tests is failing, I
need to think a bit about how best to fix it.
* Remove Subscriptions manager
There's no need for this implementation since we're
using the one from `jsonrpc-pubsub` now
* Fix author RPC test
This test used to check for a numerial subscription ID,
whereas now it uses a string based ID which is the default
provided by `jsonrpc-pubsub`'s subscription manager.
* Remove unused NumericIdProvider
* Add missing bracket
Removed one too many with that last one, lol
* Bump `jsonrpc` to v14.2
There's an exception though. `jsonrpc-derive` cannot be bumped
past v14.0.5 just yet since it has a dependency on `quote` pinned
to v1.0.1. This means that at the moment it won't build on Substrate
since it's using v1.0.3.
* Track `jsonrpc-derive` master branch
* Bump `quote` version to v1.0.6
* Bump `jsonrpc-derive` to v14.2.1
This includes support for `quote` v1.0.6
Instead of having the tx pool and offchain worker being feed from the
same import notification stream, this pr splits them to use two
different streams. The first advantage of this split is that the tx pool
will not be spawned anymore in another task and instead will directly
process the notification in the same task. This has the advantage of
being faster when the system is being under load, as the tx pool will
not be waiting for being scheduled to handle the notification.