Files
pezkuwi-subxt/polkadot/node/overseer/orchestra/adr/01-adr.md
T
Bernhard Schuster 450ca2baca overseer becomes orchestra (#5542)
* rename overseer-gen to orchestra

Also drop `gum` and use `tracing`.

* make orchestra compile as standalone

* introduce Spawner trait to split from sp_core

Finalizes the independence of orchestra from polkadot-overseer

* slip of the pen

* other fixins

* remove unused import

* Update node/overseer/orchestra/proc-macro/src/impl_builder.rs

Co-authored-by: Vsevolod Stakhov <vsevolod.stakhov@parity.io>

* Update node/overseer/orchestra/proc-macro/src/impl_builder.rs

Co-authored-by: Vsevolod Stakhov <vsevolod.stakhov@parity.io>

* orchestra everywhere

* leaky data

* Bump scale-info from 2.1.1 to 2.1.2 (#5552)

Bumps [scale-info](https://github.com/paritytech/scale-info) from 2.1.1 to 2.1.2.
- [Release notes](https://github.com/paritytech/scale-info/releases)
- [Changelog](https://github.com/paritytech/scale-info/blob/master/CHANGELOG.md)
- [Commits](https://github.com/paritytech/scale-info/compare/v2.1.1...v2.1.2)

---
updated-dependencies:
- dependency-name: scale-info
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Add missing markdown code block delimiter (#5555)

* bitfield-signing: remove util::jobs usage  (#5523)

* Switch to pooling copy-on-write instantiation strategy for WASM (companion for Substrate#11232) (#5337)

* Switch to pooling copy-on-write instantiation strategy for WASM

* Fix compilation of `polkadot-test-service`

* Update comments

* Move `max_memory_size` to `Semantics`

* Rename `WasmInstantiationStrategy` to `WasmtimeInstantiationStrategy`

* Update a safety comment

* update lockfile for {"substrate"}

Co-authored-by: parity-processbot <>

* Fix build

Co-authored-by: Vsevolod Stakhov <vsevolod.stakhov@parity.io>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Malte Kliemann <mail@maltekliemann.com>
Co-authored-by: Chris Sosnin <48099298+slumber@users.noreply.github.com>
Co-authored-by: Koute <koute@users.noreply.github.com>
2022-05-19 13:42:02 +01:00

2.0 KiB

Limit outgoing messages

Status

Accepted + implemented.

Context

Previously, there was no way to limit and hence reason about a subset of subsystems, and if they form a cycle. Limiting the outgoing message types is a first step to create respective graphs and use classic graph algorithms to detect those and leave it to the user to resolve these.

Decision

Annotate the #[orchestra] inner #[subsystem(..)] annotation with an aditional set of outgoing messages and enforce this via more fine grained trait bounds on the Sender and <Context>::Sender bounds.

Consequences

  • A graph will be spawn for every compilation under the OUT_DIR of the crate where #[orchestra] is specified.
  • Each subsystem has a consuming message which is often referred to as generic M (no change on that, is as before), but now we have trait AssociateOutgoing { type OutgoingMessages = ..; } which defines an outgoing helper enum that is generated with an ident constructed as ${Subsystem}OutgoingMessages where ${Subsystem} is the subsystem identifier as used in the orchestra declaration. ${Subsystem}OutgoingMessages is used throughout everywhere to constrain the outgoing messages (commonly referred to as OutgoingMessage generic bounded by ${Subsystem}OutgoingMessages: From<OutgoingMessage> or ::OutgoingMessages: From. It's what allows the construction of the graph and compile time verification.
  • ${Subsystem}SenderTrait and ${Subsystem}ContextTrait are accumulation traits or wrapper traits, that combine over all annotated M or OutgoingMessages from the orchestra declaration or their respective outgoing types. It is usage convenience and assures consistency within a subsystem while also maintaining a single source of truth for which messages can be sent by a particular subsystem. Note that this is sidestepped for the test subsystem, which may consume gen=AllMessages, the global message wrapper type.
  • Job-based subsystems, being on their way out, are patched, but they now are generic over the Sender type, leaking that type.