Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Overseer #1152

Merged
merged 21 commits into from
Jun 2, 2020
Merged

Overseer #1152

merged 21 commits into from
Jun 2, 2020

Conversation

montekki
Copy link
Contributor

@montekki montekki commented May 26, 2020

A very early draft PR of the Overseer implementation.

Essentially what it does is runs async tasks and lets them communicate with each other using message passing. For more motivations behind implementing such an Overseer consult the implementors-guide (linked above).

The code contains reasoning behind the current architectural approach (can be viewed with cargo doc --no-deps --open in the overseer dir) however given that:

  • It is like around my third attempt in a week at designing it
  • Turns out that designing convenient async APIs is not easy
    It is likely to change a lot.

To the moment have thought about this component in the most possible general way, it looks like a large portion of what we will end up with can be abstracted away in another crate/repo and implement a very generic Overseer that can be removed, it would probably be great to make it happen.

Fixes #1144

@montekki montekki added the A3-in_progress Pull request is in progress. No review needed at this stage. label May 26, 2020
Copy link
Contributor

@expenses expenses left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had a quick skim and have made a few comments.

overseer/src/lib.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved

// Do the message dispatching be it broadcasting or direct messages.
//
// TODO: this desperately need refactoring.
Copy link
Contributor

@drahnr drahnr May 26, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it feels slightly misplaced to do all of this here, should not the subsystem take care of processing individual Messages?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The spec stresses out that the overseer itself does all the message routing to "provide a single source of heartbeat in the system" or I don't remember the exact words, but that piece of doc contains some motivation

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The heartbeat is about doing this rough thing

let new_chain_head = chain_events.next().await;
future::join_all(subsystems.iter().map(|s| s.send(StartWork(...)))).await;
// thus the `StartWork` message is buffered for all subsystems before we send any further message to subsystems

}

impl Subsystem<usize> for Subsystem1 {
fn start(&mut self, ctx: SubsystemContext<usize>) -> SubsystemJob {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not a fan of start, spawn / block_on/run tend to give a better idea, of what it does, but that might be a personal pref

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

block_on is probably not the best choice since we are not blocking here, but spawn works for me

Copy link
Contributor

@rphmeier rphmeier left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some general comments on executors and type-erasure. I was not generally expecting the overseer to act as an executor for all subsystems and spawned tasks, but rather to just do initial spawning and provide communication for them.

Also I have some opinions on codebase structure:

polkadot
├── node
│   ├── core
│   ├── messages
│   ├── network
│   └── overseer
├── primitives
└── runtime
  • Primitives are for common types between node and runtime and maybe runtime APIs
  • node/messages defines all message types, probably in single crate
  • runtime defines all the runtime modules
  • node/core holds all core subsystem implementations.
  • node/network holds all network subsystem implementations
  • node/overseer holds the overseer that glues them together

Cargo.toml Outdated Show resolved Hide resolved
overseer/Cargo.toml Outdated Show resolved Hide resolved
overseer/examples/minimal-example.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved
Copy link
Contributor

@mxinden mxinden left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 Thanks for the well structured and well documented design. Made it easy to review!

I have a couple of ideas. As I am not very familiar with the Polkadot codebase please take these with a grain of salt!

overseer/src/lib.rs Outdated Show resolved Hide resolved
Comment on lines 159 to 165
pub async fn try_recv(&mut self) -> Result<Option<M>, ()> {
match poll!(self.rx.next()) {
Poll::Ready(Some(msg)) => Ok(Some(msg)),
Poll::Ready(None) => Err(()),
Poll::Pending => Ok(None),
}
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why make this an async function without any awaits? Why not return Poll<Option<M>> here? Why deviate from the ecosystem standard that something returns Poll::Pending when not yet ready?

Suggested change
pub async fn try_recv(&mut self) -> Result<Option<M>, ()> {
match poll!(self.rx.next()) {
Poll::Ready(Some(msg)) => Ok(Some(msg)),
Poll::Ready(None) => Err(()),
Poll::Pending => Ok(None),
}
}
pub fn try_recv(&mut self, cx: Context<_>) -> Poll<Option<M>> {
self.rx.poll_next_unpin(cx)
}

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We want to call it from the async context:

async {
    ctx.try_recv().await;
}

So we don't actually want the user to deal with Context since that's not something that's being passed around, rather we have to somehow get it from the environment; so that is hidden by the poll! macro and we in turn hide it's usage from the user by this method. But the method needs to be async for poll! to work.

Also it would make no sense to use Poll in the async context.

Does this explanation make any sense at all? But the return type probably could be made a bit better

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As a user I would be confused to await a function that explicitly returns directly (try prefix). Instead I would find poll!(ctx.try_recv()) easier to understand as it implies that the call logically returns directly.

Anyways, this is not a big deal, if no one else feels the same this should stay as it is.

overseer/src/lib.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved
Comment on lines 159 to 165
pub async fn try_recv(&mut self) -> Result<Option<M>, ()> {
match poll!(self.rx.next()) {
Poll::Ready(Some(msg)) => Ok(Some(msg)),
Poll::Ready(None) => Err(()),
Poll::Pending => Ok(None),
}
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As a user I would be confused to await a function that explicitly returns directly (try prefix). Instead I would find poll!(ctx.try_recv()) easier to understand as it implies that the call logically returns directly.

Anyways, this is not a big deal, if no one else feels the same this should stay as it is.

overseer/src/lib.rs Outdated Show resolved Hide resolved
@montekki
Copy link
Contributor Author

@rphmeier I attempted to solve the problem of communication with the outside world in 564964c (the latest commit atm) and added forwarding of timer events from outside world to the example code. I think that the results is not that bad actually.
So now I think that feature-wise it's ready for re-reviewing as I intend to add no new features to this PR. After this eventually passes the review I will re-arrange the directory structure to avoid a mess.

@montekki montekki added the B0-silent Changes should not be mentioned in any release notes label May 30, 2020
@montekki
Copy link
Contributor Author

When the subsystems communicate with each other they use the api of the context, so to send message from one subsystem to another subsystem they use

	/// Send a direct message to some other `Subsystem` you know the `I`d of.
	pub async fn send_msg(&mut self, to: I, msg: M) -> SubsystemResult<()> {

When another subsystem receives this message it will receive

enum FromOverseer {
..,
	/// Some other `Subsystem`'s message.
	Communication {
		msg: M,
		from: Option<I>,
	},
}

By looking at the from field of the message a subsystem knows if it was received from another subystem (Some) or from the outside world. In the first case it may use send_msg to answer back (request-response interaction) or not (just a notification case).

Now when a subsystem wants to communicate to someone outside the overseer it uses

	/// Send a message to some entity that resides outside of the `Overseer`.
	pub async fn send_msg_outside(&mut self, msg: M) -> SubsystemResult<()> {
		self.tx.send(ToOverseer::SubsystemMessage {

Which will eventually be exiting the Overseer via OverseerHandler and the outside code has to know how to route this message.

When the outside code wants to send a message to one of the Subsystems in the Overseer it uses

	/// Send some message to one of the `Subsystem`s.
	pub async fn send_to_subsystem(&mut self, to: I, msg: M) -> SubsystemResult<()> {
		self.events_tx.send(Event::MsgToSubsystem {

api of the OverseerHandler. So the outside code is assumed to have knowledge of what I we are being generic over but it would be the same if we just used pre-defined big struct.

@rphmeier
Copy link
Contributor

rphmeier commented May 31, 2020

The send_message_outside thing can't differentiate between multiple requests, though.

the outside code has to know how to route this message.

Wouldn't the overseer have to know how to route the message?

In the first case it may use send_msg to answer back (request-response interaction) or not (just a notification case).

If both A and B want to send ValidationSubsystem::ValidateBlock. A and B both need a BlockValidatedMessage variant, right? Or is this the idea behind the accepts_message thing, that you'd have a ValidationSubsystemResponse message type, and both A and B also accept that message type?

Also I guess we need some kind of unique RequestId for all requests, so we can coordinate requests and responses. And all subsystems will need to implement this logic, of matching

pending_requests: HashMap<RequestId, RequestKindsThisSubsystemMakes>

against incoming messages.

The overseer will also have to do this, but it'll have to have a big enum of all possible response types, which is some of the difficulty I was mentioning.

In the first case it may use send_msg to answer back (request-response interaction) or not (just a notification case).

On the other hand, we'd have oneshot::Receiver.await which does not require the addressing scheme.

So, in short, we are running into the exact issues that I predicted at every step...

@montekki montekki requested a review from rphmeier June 1, 2020 09:25
@montekki montekki marked this pull request as ready for review June 1, 2020 09:25
Copy link
Contributor

@rphmeier rphmeier left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generally looks good, just some style nits.

I like the use of RemoteHandle in detecting early exit and in the Stop routine.

overseer/src/lib.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved
overseer/src/lib.rs Outdated Show resolved Hide resolved
montekki and others added 3 commits June 1, 2020 16:46
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
Move function from impl block.
Do not panic but resolve with errors if spawner fails or subsystem
resolves.
@montekki montekki added A0-please_review Pull request needs code review. and removed A3-in_progress Pull request is in progress. No review needed at this stage. labels Jun 1, 2020
@montekki montekki merged commit 162486c into paritytech:master Jun 2, 2020
antonio-dropulic pushed a commit that referenced this pull request Nov 30, 2021
d94b62b1ac update dependencies (#1229)
98eb9ee13d Add mut support (#1232)
ffef6f89f9 fixed set_operational in GRANDPA pallet (#1226)
bd2f8bfbd7 Add CODEOWNERS file (#1219)
6b5cf2b591 Unify metric names (#1209)
d1541e797e remove abandoned exchange relay (#1217)
39140d0b34 Remove unused `relays/headers` (#1216)
9bc071d42b Remove unused PoA<>Substrate bridge (#1210)
877e8d01e3 Fix UI deployment. (#1211)
6cd5775ebe Add `AtLeast32BitUnsigned` for MessageLance::SourceChainBalance (#1207)
407bf44a8a add missing license header (#1204)
9babb19810  Custom relay strategy (#1198)
c287872a11 fix clippy things (#1200)
3a40e62789 Expose some const value and type (#1186)
32b61476d1 increase sleep before connectingMillau (#1195)
aabe7041fa revert messages transactions mortality (#1194)
3651f4f909 Message transactions mortality (#1191)
364d6e155d Bump dependencies (#1180)
f0389acc08 cargo +nightly fmt --all (#1192)
b270b6a016 Unify error enums in substrate and ethereum clients with `thiserror` (#1094)
58c4946f74 Limit max call size of Rialto/Millau runtimes (#1187)
fd56a8cd56 Add UI to the deployment (#1047)
16f01dc736 Westend -> Millau alerts are pending before notifications are sent (#1184)
5628c11ece replace collective flip with babe randomness in Rialto (#1188)
1094a63b00 ignore another (pretty bad) RUSTSEC (#1185)
379fe323ea fix/ignore cargo deny issues (#1183)
92af5e6e64 additional log in finality relay + rephrase "failed" (#1182)
b996a3b681 Rialto parachain in test deployments (#1178)
28d9332b44 Resubmit transactions strategy for Polkadot/Kusama (#1175)
d0172c6847 Playing with CI (#1179)
fb6f42456d fix checks order when registering parachain (#1177)
ee828c005a Register-parachain subcommand of substrate-relay (#1170)
8cd2b1a112 Token swap pallet benchmarks (#1174)
bb811accb1 fix collision with westend bridge (#1172)
8d2fba70ed add token swaps to test deployments (#1169)
b6d1bdfe2c publish rialto parachain collator image (#1171)
834ae4a10a Fix OutboundLaneData types (#1159)
5ee0ea1626 copypasted -> copied (#1168)
c3bb835f18 fix spelling (#1167)
f90d041dc9 Upgrade `jsonrpsee` to v0.3 (#1051)
598c9b6d0d add some basic tests for swap tokens (#1164)
05e88c61f5 publish images when tag of specific format(e.g. v2021-09-27 + v2021-09-27-1) is published (#1166)
7f3f94a6e0 Fix CI again (#1165)
ff37de332f Move calculation relayer reward into `MessageDeliveryAndDispatchPayment` (#1153)
36fbba839b fix clippy warning (#1163)
16da44d018 explicit wasm build (#1158)
c9c8226449 Match substrate's fmt (#1148)
2fdd7f3e5e Fix/ignore clippy warnings (#1157)
43dfcc2686 Adding LookupAddress (#1156)
951eaa5582 Add rialto-parachain runtime and node (#1142)
803d266d61 Rename MessageId -> BridgeMessageId (#1152)
5f234484fc Box large arguments of GRANDPA pallet (#1154)
cf9abc1011 Fix spelling (#1150)
ab83ba2e58 Relay subcommand that performs token RLT <> MLAU token swap (#1141)
832536caf0 Polkadot <> Kusama relayers (#1122)
6d0daa8975 Add `OnMessageAccepted` callback (#1134)
5d03a20b3e Integrate token swap pallet into Millau runtime (#1099)
ea4cfa833e Adding MultiAddress type and ValidationCodeHash (#1139)
c20325a784 Add tests for `Raw` and `BridgeSendMessage` enum `Call` variants (#1125)
6d802416e2 increase pause before pining Rialto nodes (#1137)
b54fa56b62 calculate fee using full message payload (#1132)
ca5d8178f5 Add parachain pallets to rialto runtime (#1053)
9eaae4142e fix transaction resubmitter limits for Millau -> Rialto transactions (#1135)
9d4e17783c add --mandatory-headers-only cli option to complex relay (#1129)
1c5e0ec1cb Add local CI info to README (#1131)
a8e0929e14 chore: spellchecker fixes (#1130)
3b8e2118e3 set fee for importing mandatory headers to zero (#1127)
49bba9aa52 another bunch of words for spellchecker (#1128)
8a72eafef6 Increase pause before messages generation start (#1126)
1f0ba9a191 Move some associated types from relay_substrate_client::Chain to bp_runtime::Chain (#1087)
74bc1a5b54 Transactions resubmitter (#1083)
21ba001f26 log max balance drop when sending message (#1117)
638a7ddffa Code Cleaning (#1124)
be6555c51b Fix buildah logout (#1120)
87539c4a98 Format code work (#1116)
526fe7fdd7 fix spelling (#1119)
bd4ce7f241 Fix spelling (#1118)
3c1147858e added missing constants to Kusama/Polkadot primitives (#1114)
52093b22ab Fix delivery transaction estimation used by rational relayer (#1109)
77a2f2fbed Remove fund account checks from upgrade. (#1111)
824334802b Rename param and update comment (#1108)
d7784bfe06 Fix spellcheck (#1110)
0b18f5906a Refactor substrate messages source and substrate messages target (#1105)
b27240bbff fix compilation (#1107)
9697da4fe8 Emit mortal transactions from relay (#1073)
b29396c077 Change vault vars type to env vars (#1084)
35e0bbdc0c Make clippy mandatory. (#1103)
a517e8541f Remove unused deps (#1102)
873dae608a Remove unnessary deps (#1101)
13450b74ee Stored conversion rate updater (#1005)
74389829f3 [BREAKING] Migrate messages pallet to frame v2 (#1088)
424da938dd README fix (#1100)
865744c909 upgrade currency exchange pallet to frame v2 (#1097)
b5038148b3 Add missing docs (#1095)
0791e911c1 Common crate for substrate-relay (#1082)
3834c9d880 Update high-level-overview.md (#1093)
c93553face Increase the time window for messaging alerts. (#1092)
8b9cc3cecd migrate pallet-shift-session-manager to frame v2 (#1090)
dc91813c22 migrate eth PoA pallet to frame v2 (#1091)
f16bb098cc Migrate dispatch pallet  to frame v2 (#1089)
19f4325348 Bridge/This Chain Ids should be exposed as constants on pallet level. (#1085)
6381122df7 Change ChainSpec::from_genesis for Rialto and Millau chains to reflect the chain names. (#1079)
0f1d33e973 Make CI happy again (#1086)
238e65d96f fix typo (#1080)
fc008457b6 Token-swap-over-bridge pallet (#944)
3fb97fa5ef Fix full spellcheck (#1076)
eae4ed7170 fixed wrong trace (#1075)
219a0fad04 merge two weight-related loops in messages pallet (#1071)
fc85632fdb increase_message_fee depends on stored mesage size (#1066)
530f37a23b companion for #3507 (#1067)
53b8cba683 sc_basic_authorship=trace for millau nodes (#1074)
9874e05e98 Improve traces of message generator scripts (#1069)
7b5ee84fbb extract message_details impl into runtime common (#1070)
5a4aed5a8b refund weight for mot pruning messages (#1062)
90e3d1e111 Fix Westend -> Millau sync (#1064)
427d30ddfc When restarting client, also "restart" tokio runtime (#1065)
d47c05eeef Change get pipeline sensitive variables from Vault instead of GitLab settings (#1063)
d775a85415 use tokio reactor to execute jsonrpsee futures (#1061)
15c8cd61cb Use BABE to author blocks on Rialto (previously: Aura) (#1050)
5186293500 Allow reading suri && password override from file (#1059)
b506298262 Update jsonrpsee reference (#1049)
1734d00517 enable weight fee adjustent in Rialto/Millau (#1044)
607265afae Pay dispatch fee at target chain cli option (#1043)
ce79ef91be bump dependencies before start referencing polkadot repo (#1048)
924fa24f6d Cli option for greedy relayer + run no-losses relayer by default (#1042)
e21eba7b59 Yrong README Fixup + M1 Fixes (#1045)
20d08204a2 Confirm delivery detects when more than expected messages are confirmed (#1039)
994b846b52 pre and post dispatch weights of OnDeliveryConfirmed callback (#1040)
1dd5297e84 give real value to Rialto and Millau tokens (#1038)
035bee8715 Use real conversion rate in greedy relayer strategy (#1035)
9cfaecd0f7 fixed metrics prefix (#1037)
1d8d224937 Use kebab-case for bridge arguments (#1036)
f30a4c79a6 Shared reference to conversion rate metric value (#1034)
c34d7a5cbb estimate transaction fee (#1015)
93404b18bb change alert period from 2m to 10m for Westend -> Millau (GRANDPA or public node itself is lagging sometimes) (#1032)

git-subtree-dir: bridges
git-subtree-split: d94b62b1acb3d06d4f38bcb42c9e9d94e58cdec4
antonio-dropulic pushed a commit that referenced this pull request Dec 1, 2021
407bf44a8a add missing license header (#1204)
9babb19810  Custom relay strategy (#1198)
c287872a11 fix clippy things (#1200)
3a40e62789 Expose some const value and type (#1186)
32b61476d1 increase sleep before connectingMillau (#1195)
aabe7041fa revert messages transactions mortality (#1194)
3651f4f909 Message transactions mortality (#1191)
364d6e155d Bump dependencies (#1180)
f0389acc08 cargo +nightly fmt --all (#1192)
b270b6a016 Unify error enums in substrate and ethereum clients with `thiserror` (#1094)
58c4946f74 Limit max call size of Rialto/Millau runtimes (#1187)
fd56a8cd56 Add UI to the deployment (#1047)
16f01dc736 Westend -> Millau alerts are pending before notifications are sent (#1184)
5628c11ece replace collective flip with babe randomness in Rialto (#1188)
1094a63b00 ignore another (pretty bad) RUSTSEC (#1185)
379fe323ea fix/ignore cargo deny issues (#1183)
92af5e6e64 additional log in finality relay + rephrase "failed" (#1182)
b996a3b681 Rialto parachain in test deployments (#1178)
28d9332b44 Resubmit transactions strategy for Polkadot/Kusama (#1175)
d0172c6847 Playing with CI (#1179)
fb6f42456d fix checks order when registering parachain (#1177)
ee828c005a Register-parachain subcommand of substrate-relay (#1170)
8cd2b1a112 Token swap pallet benchmarks (#1174)
bb811accb1 fix collision with westend bridge (#1172)
8d2fba70ed add token swaps to test deployments (#1169)
b6d1bdfe2c publish rialto parachain collator image (#1171)
834ae4a10a Fix OutboundLaneData types (#1159)
5ee0ea1626 copypasted -> copied (#1168)
c3bb835f18 fix spelling (#1167)
f90d041dc9 Upgrade `jsonrpsee` to v0.3 (#1051)
598c9b6d0d add some basic tests for swap tokens (#1164)
05e88c61f5 publish images when tag of specific format(e.g. v2021-09-27 + v2021-09-27-1) is published (#1166)
7f3f94a6e0 Fix CI again (#1165)
ff37de332f Move calculation relayer reward into `MessageDeliveryAndDispatchPayment` (#1153)
36fbba839b fix clippy warning (#1163)
16da44d018 explicit wasm build (#1158)
c9c8226449 Match substrate's fmt (#1148)
2fdd7f3e5e Fix/ignore clippy warnings (#1157)
43dfcc2686 Adding LookupAddress (#1156)
951eaa5582 Add rialto-parachain runtime and node (#1142)
803d266d61 Rename MessageId -> BridgeMessageId (#1152)
5f234484fc Box large arguments of GRANDPA pallet (#1154)
cf9abc1011 Fix spelling (#1150)
ab83ba2e58 Relay subcommand that performs token RLT <> MLAU token swap (#1141)
832536caf0 Polkadot <> Kusama relayers (#1122)
6d0daa8975 Add `OnMessageAccepted` callback (#1134)
5d03a20b3e Integrate token swap pallet into Millau runtime (#1099)
ea4cfa833e Adding MultiAddress type and ValidationCodeHash (#1139)
c20325a784 Add tests for `Raw` and `BridgeSendMessage` enum `Call` variants (#1125)
6d802416e2 increase pause before pining Rialto nodes (#1137)
b54fa56b62 calculate fee using full message payload (#1132)
ca5d8178f5 Add parachain pallets to rialto runtime (#1053)
9eaae4142e fix transaction resubmitter limits for Millau -> Rialto transactions (#1135)
9d4e17783c add --mandatory-headers-only cli option to complex relay (#1129)
1c5e0ec1cb Add local CI info to README (#1131)
a8e0929e14 chore: spellchecker fixes (#1130)
3b8e2118e3 set fee for importing mandatory headers to zero (#1127)
49bba9aa52 another bunch of words for spellchecker (#1128)
8a72eafef6 Increase pause before messages generation start (#1126)
1f0ba9a191 Move some associated types from relay_substrate_client::Chain to bp_runtime::Chain (#1087)
74bc1a5b54 Transactions resubmitter (#1083)
21ba001f26 log max balance drop when sending message (#1117)
638a7ddffa Code Cleaning (#1124)
be6555c51b Fix buildah logout (#1120)
87539c4a98 Format code work (#1116)
526fe7fdd7 fix spelling (#1119)
bd4ce7f241 Fix spelling (#1118)
3c1147858e added missing constants to Kusama/Polkadot primitives (#1114)
52093b22ab Fix delivery transaction estimation used by rational relayer (#1109)
77a2f2fbed Remove fund account checks from upgrade. (#1111)
824334802b Rename param and update comment (#1108)
d7784bfe06 Fix spellcheck (#1110)
0b18f5906a Refactor substrate messages source and substrate messages target (#1105)
b27240bbff fix compilation (#1107)
9697da4fe8 Emit mortal transactions from relay (#1073)
b29396c077 Change vault vars type to env vars (#1084)
35e0bbdc0c Make clippy mandatory. (#1103)
a517e8541f Remove unused deps (#1102)
873dae608a Remove unnessary deps (#1101)
13450b74ee Stored conversion rate updater (#1005)
74389829f3 [BREAKING] Migrate messages pallet to frame v2 (#1088)
424da938dd README fix (#1100)
865744c909 upgrade currency exchange pallet to frame v2 (#1097)
b5038148b3 Add missing docs (#1095)
0791e911c1 Common crate for substrate-relay (#1082)
3834c9d880 Update high-level-overview.md (#1093)
c93553face Increase the time window for messaging alerts. (#1092)
8b9cc3cecd migrate pallet-shift-session-manager to frame v2 (#1090)
dc91813c22 migrate eth PoA pallet to frame v2 (#1091)
f16bb098cc Migrate dispatch pallet  to frame v2 (#1089)
19f4325348 Bridge/This Chain Ids should be exposed as constants on pallet level. (#1085)
6381122df7 Change ChainSpec::from_genesis for Rialto and Millau chains to reflect the chain names. (#1079)
0f1d33e973 Make CI happy again (#1086)
238e65d96f fix typo (#1080)
fc008457b6 Token-swap-over-bridge pallet (#944)
3fb97fa5ef Fix full spellcheck (#1076)
eae4ed7170 fixed wrong trace (#1075)
219a0fad04 merge two weight-related loops in messages pallet (#1071)
fc85632fdb increase_message_fee depends on stored mesage size (#1066)
530f37a23b companion for #3507 (#1067)
53b8cba683 sc_basic_authorship=trace for millau nodes (#1074)
9874e05e98 Improve traces of message generator scripts (#1069)
7b5ee84fbb extract message_details impl into runtime common (#1070)
5a4aed5a8b refund weight for mot pruning messages (#1062)
90e3d1e111 Fix Westend -> Millau sync (#1064)
427d30ddfc When restarting client, also "restart" tokio runtime (#1065)
d47c05eeef Change get pipeline sensitive variables from Vault instead of GitLab settings (#1063)
d775a85415 use tokio reactor to execute jsonrpsee futures (#1061)
15c8cd61cb Use BABE to author blocks on Rialto (previously: Aura) (#1050)
5186293500 Allow reading suri && password override from file (#1059)
b506298262 Update jsonrpsee reference (#1049)
1734d00517 enable weight fee adjustent in Rialto/Millau (#1044)
607265afae Pay dispatch fee at target chain cli option (#1043)
ce79ef91be bump dependencies before start referencing polkadot repo (#1048)
924fa24f6d Cli option for greedy relayer + run no-losses relayer by default (#1042)
e21eba7b59 Yrong README Fixup + M1 Fixes (#1045)
20d08204a2 Confirm delivery detects when more than expected messages are confirmed (#1039)
994b846b52 pre and post dispatch weights of OnDeliveryConfirmed callback (#1040)
1dd5297e84 give real value to Rialto and Millau tokens (#1038)
035bee8715 Use real conversion rate in greedy relayer strategy (#1035)
9cfaecd0f7 fixed metrics prefix (#1037)
1d8d224937 Use kebab-case for bridge arguments (#1036)
f30a4c79a6 Shared reference to conversion rate metric value (#1034)
c34d7a5cbb estimate transaction fee (#1015)
93404b18bb change alert period from 2m to 10m for Westend -> Millau (GRANDPA or public node itself is lagging sometimes) (#1032)

git-subtree-dir: bridges
git-subtree-split: 407bf44a8a5f4e60aceef2dc755cd9ff09929ac3
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
A0-please_review Pull request needs code review. B0-silent Changes should not be mentioned in any release notes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Implement Overseer
5 participants