* start working on building the real overseer
Unfortunately, this fails to compile right now due to an upstream
failure to compile which is probably brought on by a recent upgrade
to rustc v1.47.
* fill in AllSubsystems internal constructors
* replace fn make_metrics with Metrics::attempt_to_register
* update to account for #1740
* remove Metrics::register, rename Metrics::attempt_to_register
* add 'static bounds to real_overseer type params
* pass authority_discovery and network_service to real_overseer
It's not straightforwardly obvious that this is the best way to handle
the case when there is no authority discovery service, but it seems
to be the best option available at the moment.
* select a proper database configuration for the availability store db
* use subdirectory for av-store database path
* apply Basti's patch which avoids needing to parameterize everything on Block
* simplify path extraction
* get all tests to compile
* Fix Prometheus double-registry error
for debugging purposes, added this to node/subsystem-util/src/lib.rs:472-476:
```rust
Some(registry) => Self::try_register(registry).map_err(|err| {
eprintln!("PrometheusError calling {}::register: {:?}", std::any::type_name::<Self>(), err);
err
}),
```
That pointed out where the registration was failing, which led to
this fix. The test still doesn't pass, but it now fails in a new
and different way!
* authorities must have authority discovery, but not necessarily overseer handlers
* fix broken SpawnedSubsystem impls
detailed logging determined that using the `Box::new` style of
future generation, the `self.run` method was never being called,
leading to dropped receivers / closed senders for those subsystems,
causing the overseer to shut down immediately.
This is not the final fix needed to get things working properly,
but it's a good start.
* use prometheus properly
Prometheus lets us register simple counters, which aren't very
interesting. It also allows us to register CounterVecs, which are.
With a CounterVec, you can provide a set of labels, which can
later be used to filter the counts.
We were using them wrong, though. This pattern was repeated in a
variety of places in the code:
```rust
// panics with an cardinality mismatch
let my_counter = register(CounterVec::new(opts, &["succeeded", "failed"])?, registry)?;
my_counter.with_label_values(&["succeeded"]).inc()
```
The problem is that the labels provided in the constructor are not
the set of legal values which can be annotated, but a set of individual
label names which can have individual, arbitrary values.
This commit fixes that.
* get av-store subsystem to actually run properly and not die on first signal
* typo fix: incomming -> incoming
* don't disable authority discovery in test nodes
* Fix rococo-v1 missing session keys
* Update node/core/av-store/Cargo.toml
* try dummying out av-store on non-full-nodes
* overseer and subsystems are required only for full nodes
* Reduce the amount of warnings on browser target
* Fix two more warnings
* InclusionInherent should actually have an Inherent module on rococo
* Ancestry: don't return genesis' parent hash
* Update Cargo.lock
* fix broken test
* update test script: specify chainspec as script argument
* Apply suggestions from code review
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Update node/service/src/lib.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* node/service/src/lib: Return error via ? operator
* post-merge blues
* add is_collator flag
* prevent occasional av-store test panic
* simplify fix; expand application
* run authority_discovery in Role::Discover when collating
* distinguish between proposer closed channel errors
* add IsCollator enum, remove is_collator CLI flag
* improve formatting
* remove nop loop
* Fix some stuff
Co-authored-by: Andronik Ordian <write@reusable.software>
Co-authored-by: Bastian Köcher <git@kchr.de>
Co-authored-by: Fedor Sakharov <fedor.sakharov@gmail.com>
Co-authored-by: Robert Habermeier <robert@Roberts-MBP.lan1>
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
Co-authored-by: Max Inden <mail@max-inden.de>
* Rewrite client handling
We are supporting muliple polkadot-like chains and all have different
client types. This pr reworks the client handling by having all of them
in one enum combined. Besides that, there is added a special trait
`ExecuteWithClient` to use the internal client.
* Apply suggestions from code review
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
* Up the versions
* Fix Cargo.lock
* Fix merge conflict
* ......................
* ....v2
* yep
* I'm dumb...
* Browser lol
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
* service/src/lib.rs: Register network event stream for authority disc
Previously one would create a sender and receiver channel pair, pass the
sender to the build_network_future through the service builder and
funnel network events returned from polling the network service into the
sender to be consumed by the authority discovery module owning the
receiver.
With recent changes it is now possible to register an event_stream
with the network service directly, thus one does not need to make the
detour through the build_network_future.
This commit is an adjusted clone of one targeting the Substrate
repository.
* service/src/lib.rs: Fix futures::stream imports
* [TMP] *: Replace polkadot-upstream with feature branch
* Switch branch
* Small change
* Companion PR to substrate#4542
* Revert "Merge remote-tracking branch 'tomaka/companion-4542' into ashley-browser-utils"
This reverts commit 17f00afe483ee65cb3cf4a0faca27034e6d6523a, reversing
changes made to 928cbb9c55542baff56b53accd9a5a45f12f01f1.
* ashley-browser-utils -> ashley-browser-utils-polkadot
* Switch branches back
Co-authored-by: Max Inden <mail@max-inden.de>
Co-authored-by: Pierre Krieger <pierre.krieger1708@gmail.com>
* Make availability-store compile for WASM
* Use --manifest-path instead
* Make validation work on wasm!
* Switch to Spawn trait
* Migrate validation to std futures
* Migrate network to std futures
* Final changes to validation
* Tidy up network
* Tidy up validation
* Switch branch
* Migrate service
* Get polkadot to compile via wasm!
* Add browser-demo
* Add initial browser file
* Add browser-demo
* Tidy
* Temp switch back to substrate/master
* tidy
* Fix wasm build
* Re-add release flag
* Add the /ws bootnode to the chain specs
* Copy changes from master
* Switch branch
* Switch libp2p and add wasm-timer
* Switch back libp2p and add rand
* Fix bootnodes PeerIds
* use browser indexdb
* Reduce changeset
* Make availability-store compile for WASM
* Use --manifest-path instead
* Make validation work on wasm!
* Switch to Spawn trait
* Migrate validation to std futures
* Migrate network to std futures
* Final changes to validation
* Tidy up network
* Tidy up validation
* Switch branch
* Migrate service
* Get polkadot to compile via wasm!
* Add browser-demo
* Add initial browser file
* Add browser-demo
* Tidy
* Temp switch back to substrate/master
* tidy
* Fix wasm build
* Re-add release flag
* Switch to polkadot-master
* Revert cli tokio version to avoid libp2p panic
* Update tokio version
* Fix availability store tests
* Fix validation tests
* Remove futures01 from availability-store
* Fix network tests
* Small changes
* Fix collator
* Fix typo
* Revert removal of tokio_executor that causes tokio version mismatch panic
* Fix adder test parachain
* Revert "Revert removal of tokio_executor that causes tokio version mismatch panic"
This reverts commit cfeb50c01d8df5e209483406a711e64761b44ae9.
* Update availability-store/src/worker.rs
Co-Authored-By: Pierre Krieger <pierre.krieger1708@gmail.com>
* Update network/src/lib.rs
Co-Authored-By: Pierre Krieger <pierre.krieger1708@gmail.com>
* Update network/src/lib.rs
Co-Authored-By: Pierre Krieger <pierre.krieger1708@gmail.com>
* Box pin changes
* Asyncify network functions
* Clean up browser validation worker error
* Fix av store test
* Nits
* Fix validation test
* Switch favicon
* Fix validation test again
* Revert "Asyncify network functions"
This reverts commit f20ae6548dc482cb1e75bc80641cfe55c6131a53.
* Add async blocks back in