-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Implement persistent reputation database for collator protocol (#7751) #10917
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 182 commits
Commits
Show all changes
190 commits
Select commit
Hold shift + click to select a range
4667163
add enable-experimental-collator-protocol CLI flag and new subsystem …
alindima 96b2cd1
fix clap arg
alindima 1d283d5
rollback experimental cli flag
alindima 73b61fd
WIP peer manager impl
alindima d943dbb
continue impl
alindima 2bfdaf0
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima fa731c6
make taplo happy
alindima 1691ec8
minor fix
alindima 75f00f4
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima 3b17c38
fix todo after merging previous PR
alindima 41127ae
initial memory db impl
alindima 2bf2b05
satisfy clippy
alindima 6fa2d4e
WIP
alindima f5ae202
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima 32c30ea
review comments
alindima 5271ad7
switch to processing rep bumps only for finalized block notifications
alindima 86cd891
add unit tests for Score primitive
alindima 7ffde5c
some unit tests
alindima b5e1b13
some fixes and almost all needed unit tests for ConnectedPeers
alindima 81140bc
add test for update_reputation
alindima c42c33b
some fixes
alindima 608fcb0
add a log
alindima e37e6d3
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima b23c4e1
enforce limit is non-zero
alindima e71d4e8
Merge remote-tracking branch 'origin/alindima/collator-protocol-revam…
alindima 24a9097
fix merge damage, most importantly handling finalized blocks instead …
alindima 4205200
Merge remote-tracking branch 'origin/alindima/collator-protocol-revam…
alindima 82078e6
WIP
alindima 7a490a9
still WIP
alindima c82006a
more work
alindima d90e5b5
working version: some fixes and logs
alindima c45e8c3
add potential delay to fetching collations from zero-rep peers
alindima cfc1514
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima cdb15dd
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima c902177
Merge remote-tracking branch 'origin/alindima/collator-protocol-revam…
alindima 805b0c5
fix existing tests
alindima f1cc5de
clippy
alindima e177b99
fix outrageously large log
alindima f007cc0
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima e7e6e62
review feedback
alindima b8051c9
Merge branch 'master' into alindima/collator-protocol-revamp-reputati…
alindima 5ae5351
Merge remote-tracking branch 'origin/alindima/collator-protocol-revam…
alindima 0e28f8b
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima 264d2cc
rollback changes to backing implicit view
alindima fb29312
remove unused stuff and random bits of work
alindima 53922b6
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima 8be53f7
restructure some code
alindima 6b34df7
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima 9109849
only sleep if we know we have better peers
alindima 926de29
fix todo
alindima b362c0c
some unit testing
alindima 65b28dd
more testing
alindima 3368bba
testing testing testing
alindima e0bef16
test no assignments
alindima a27d37a
only query the keystore once per session
alindima 8ae174c
moore testing
alindima 4074e66
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima 85ee00b
start testing fetches
alindima babd6e7
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima 38dcc20
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima c8b8c72
deduplicate descriptor version sanity check
alindima 0b933a9
some more testing scenarios for failed fetches
alindima 30025c2
test v1 compat
alindima 505841c
stupid clippy
alindima 9dc28e1
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima 0c90ab4
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima 50883a2
fix nasty bug in polling requests
alindima cc026ad
some logs
alindima d269a5d
more testing
alindima c5b6562
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima 83f5b43
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima 46000b0
more testing and bugfixing
alindima 4b17bac
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima f570ba6
some refactoring and bugfixing
alindima 4d1eb80
a v1 advertisement test
alindima 4bce989
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima fe2b102
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima fdc8e01
fix fix
alindima aaf3a00
impl paraid pruning using the new runtime api
alindima 98f7d19
Merge remote-tracking branch 'origin/master' into alindima/collator-p…
alindima 8ac8f7b
Add missing doc comments in claim_queue_state (#10241)
tdimitrov d06d771
Fix commented out tests (#10245)
tdimitrov 1b1b562
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
tdimitrov ff56674
add trace logs which was removed during the merge
tdimitrov 11a9474
Add `--experimental-collator-protocol` cli argument to enable the new…
tdimitrov 27b0889
fix collator binaries
tdimitrov d15dae0
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
tdimitrov 7abb6f3
`ClaimQueueState` cosmetics (#10334)
serban300 b34a129
Fix ClaimQueue inconsistencies (#10368)
serban300 86b9972
Nits
serban300 0e46e52
ensure_matches_advertisement -> FetchedCollation::ensure_matches_adve…
serban300 e731075
taplo
serban300 1a17b4c
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
serban300 de348df
Parameters order inconsistencies + Nits
serban300 7e6d97a
Renamings
serban300 aa1b5b0
Merge remote-tracking branch 'upstream/master' into alindima/collator…
serban300 03e8915
[TODO: ROLLBACK] use ValidatorExperimental by default
serban300 05e1497
[TODO: ROLLBACK] Fix build
serban300 83600e8
Revert "[TODO: ROLLBACK] Fix build"
serban300 a75e984
Revert "[TODO: ROLLBACK] use ValidatorExperimental by default"
serban300 5b8749d
Disable `experimental-collator-protocol` by default (#10414)
serban300 0b2f18b
candidates -> candidates_per_rp
serban300 05b09f6
Update from github-actions[bot] running command 'prdoc --bump patch -…
github-actions[bot] d461b2b
Update prdoc
serban300 6abe2ad
Propagate experimental-collator-protocol up to the polkadot binary
serban300 329c05b
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
tdimitrov aa3e283
CR comments
serban300 b72eab5
Fix prdoc
serban300 9651528
fix prdoc
serban300 6a07636
comment
tdimitrov b531d37
log which implementation of the collator protocol is used
tdimitrov 60a6fc5
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
tdimitrov 8c5a23a
Additional logs
tdimitrov 3505c9a
fix a compilation error
tdimitrov 9a7c493
Remove experimental-collator-protocol feature flag
serban300 0fa8ecb
Continue processing other paras if `request_candidates_pending_availa…
tdimitrov 1e78249
Collator protocol revamp: small fixes (#10456)
serban300 23c2d3c
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
serban300 1320dce
CR comments
serban300 6e24e46
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
serban300 fc50170
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
serban300 7fb078c
ClaimQueueState tests: use consts for relay parents
serban300 1cf32c3
ClaimQueueState tests: use more statics for deduplication
serban300 a3e0ca4
Fix CANDIDATE_B2 hash
serban300 e957396
ClaimQueueState tests: make more compact
serban300 0f17094
ClaimQueueState: Move fork() unit tests out of separate mod
serban300 3d86aa5
ClaimQueueState: improve fork() unit testing
serban300 d2d1476
ClaimQueueState: deduplication and nits
serban300 75682e5
Store the advertisement timestamp together with the advertisement
serban300 68bcf72
CR comments
serban300 f2a7877
`test_view_update_preserves_relay_parent_state`
tdimitrov 3b8bf7d
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
tdimitrov c1786f3
some extra logging
tdimitrov 5a49048
Extract metrics from validator_side to the crate root so that it is s…
tdimitrov 24f0142
Update the metrics in validator_side_experimental
tdimitrov 62df7c6
leftovers
serban300 445b59e
comments
tdimitrov 8144cf5
prdoc
tdimitrov 44b04f9
Use sender instead of context where possible
serban300 5505d51
Update parameters in common.rs
tdimitrov dc4426e
Add comment
serban300 e48add5
small fix
serban300 efa3008
Update parameters in common.rs - missed msg
tdimitrov 5f183c3
Failing fetching test
tdimitrov c42ef31
Simplify advertisement fetching logic
tdimitrov 67373ea
fmt
tdimitrov e1c301d
Adjust MAX_SCORE, FAILED_FETCH_SLASH and INVALID_COLLATION_SLASH
tdimitrov c5d5210
clippy
tdimitrov 89cd009
Update polkadot/node/network/collator-protocol/src/validator_side_exp…
tdimitrov 8165457
spelling
tdimitrov d088c5d
prdoc
tdimitrov 4ac381f
Move non-pub types in collation_manager after the pub types
tdimitrov c9a658c
fix a log line
tdimitrov bc237d5
Increase `INVALID_COLLATION_SLASH`
tdimitrov 9f36299
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
tdimitrov 6574a59
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
tdimitrov d52e2df
Add a new column to parachains_db for collators reputation
AlexandruCihodaru f8eaa63
Add persistent disk storage for collator reputation database
AlexandruCihodaru 2991942
Update undying collator to send valid PeerId in ApprovedPeer UMP signal
AlexandruCihodaru d1ae2f5
Add zombienet tests for collator reputation persistence
AlexandruCihodaru 562a6a1
Collator reputation persistent DB:
AlexandruCihodaru 9d3bc40
Replace the `test-persistence` feature with a runtime CLI argument
AlexandruCihodaru 406e948
Add dirty tracking optimization for collator reputation persistence
AlexandruCihodaru b32910a
Update zombienet_polkadot_tests to run collator reputation tests on CI
AlexandruCihodaru 98c2185
Update from github-actions[bot] running command 'prdoc --audience nod…
github-actions[bot] 8516537
Update from github-actions[bot] running command 'fmt'
github-actions[bot] c26bfc5
Merge branch 'master' into alindima/collator-protocol-revamp-collatio…
tdimitrov 53d7389
Update from github-actions[bot] running command 'fmt'
github-actions[bot] 8078923
Merge branch 'alindima/collator-protocol-revamp-collation-manager' in…
AlexandruCihodaru 6de5478
Refactor collators reputation persistence implementation
AlexandruCihodaru 4d404fd
Merge remote-tracking branch 'origin' into acihodaru/persistent_db_mem
AlexandruCihodaru 88043ab
Merge remote-tracking branch 'origin' into acihodaru/persistent_db_mem
AlexandruCihodaru 50e6dea
Move reputation persistence to async background writer task
AlexandruCihodaru 3c452d5
Merge remote-tracking branch 'origin' into acihodaru/persistent_db_mem
AlexandruCihodaru afe9b8f
delete unused method
AlexandruCihodaru df99932
fix merge error
AlexandruCihodaru 2db2397
Update from github-actions[bot] running command 'fmt'
github-actions[bot] d04b52f
clippy
AlexandruCihodaru 43430cf
address feedback and fix clippy
AlexandruCihodaru 3da169b
Merge remote-tracking branch 'origin' into acihodaru/persistent_db_mem
AlexandruCihodaru b5d39ab
Update from github-actions[bot] running command 'fmt'
github-actions[bot] 5da5e17
feedback v2
AlexandruCihodaru 814812e
Merge remote-tracking branch 'origin' into acihodaru/persistent_db_mem
AlexandruCihodaru 0040780
Address feedback
AlexandruCihodaru 3a9cb30
Merge remote-tracking branch 'origin' into acihodaru/persistent_db_mem
AlexandruCihodaru d055853
Update from github-actions[bot] running command 'fmt'
github-actions[bot] 31234b1
fix parity db migration
AlexandruCihodaru ab6d936
make test more reliable
AlexandruCihodaru fb8f73e
Merge remote-tracking branch 'origin' into acihodaru/persistent_db_mem
AlexandruCihodaru 8e8e9bb
increase level of peer disconnect log
AlexandruCihodaru File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -22,7 +22,10 @@ mod state; | |
| #[cfg(test)] | ||
| mod tests; | ||
|
|
||
| use crate::{validator_side_experimental::common::MIN_FETCH_TIMER_DELAY, LOG_TARGET}; | ||
| use crate::{ | ||
| validator_side_experimental::{common::MIN_FETCH_TIMER_DELAY, peer_manager::PersistentDb}, | ||
| LOG_TARGET, | ||
| }; | ||
| use collation_manager::CollationManager; | ||
| use common::{ProspectiveCandidate, MAX_STORED_SCORES_PER_PARA}; | ||
| use error::{log_error, FatalError, FatalResult, Result}; | ||
|
|
@@ -35,25 +38,50 @@ use polkadot_node_subsystem::{ | |
| messages::{CollatorProtocolMessage, NetworkBridgeEvent}, | ||
| overseer, ActivatedLeaf, CollatorProtocolSenderTrait, FromOrchestra, OverseerSignal, | ||
| }; | ||
| use polkadot_node_subsystem_util::database::Database; | ||
| use sp_keystore::KeystorePtr; | ||
| use std::{future, future::Future, pin::Pin, time::Duration}; | ||
| use std::{future, future::Future, pin::Pin, sync::Arc, time::Duration}; | ||
|
|
||
| use peer_manager::{Db, PeerManager}; | ||
| #[cfg(test)] | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. is this needed? |
||
| use peer_manager::Db; | ||
| use peer_manager::PeerManager; | ||
|
|
||
| use state::State; | ||
|
|
||
| pub use crate::validator_side_metrics::Metrics; | ||
|
|
||
| /// Default interval for persisting the reputation database to disk (in seconds). | ||
| const DEFAULT_PERSIST_INTERVAL_SECS: u64 = 600; | ||
|
|
||
| /// Configuration for the reputation db. | ||
| #[derive(Debug, Clone, Copy)] | ||
| pub struct ReputationConfig { | ||
| /// The data column in the store to use for reputation data. | ||
| pub col_reputation_data: u32, | ||
| /// How often to persist the reputation database to disk. | ||
| /// If None, defaults to DEFAULT_PERSIST_INTERVAL_SECS seconds. | ||
| pub persist_interval: Option<Duration>, | ||
| } | ||
|
|
||
| /// The main run loop. | ||
| #[overseer::contextbounds(CollatorProtocol, prefix = self::overseer)] | ||
| pub(crate) async fn run<Context>( | ||
| mut ctx: Context, | ||
| keystore: KeystorePtr, | ||
| metrics: Metrics, | ||
| db: Arc<dyn Database>, | ||
| reputation_config: ReputationConfig, | ||
| ) -> FatalResult<()> { | ||
| gum::info!(LOG_TARGET, "Running experimental collator protocol"); | ||
| if let Some(state) = initialize(&mut ctx, keystore, metrics).await? { | ||
| run_inner(ctx, state).await?; | ||
| let persist_interval = reputation_config | ||
| .persist_interval | ||
| .unwrap_or(Duration::from_secs(DEFAULT_PERSIST_INTERVAL_SECS)); | ||
| gum::info!( | ||
| LOG_TARGET, | ||
| persist_interval_secs = persist_interval.as_secs(), | ||
| "Running experimental collator protocol" | ||
| ); | ||
| if let Some(state) = initialize(&mut ctx, keystore, metrics, db, reputation_config).await? { | ||
| run_inner(ctx, state, persist_interval).await?; | ||
| } | ||
|
|
||
| Ok(()) | ||
|
|
@@ -64,7 +92,9 @@ async fn initialize<Context>( | |
| ctx: &mut Context, | ||
| keystore: KeystorePtr, | ||
| metrics: Metrics, | ||
| ) -> FatalResult<Option<State<Db>>> { | ||
| db: Arc<dyn Database>, | ||
| reputation_config: ReputationConfig, | ||
| ) -> FatalResult<Option<State<PersistentDb>>> { | ||
| loop { | ||
| let first_leaf = match wait_for_first_leaf(ctx).await? { | ||
| Some(activated_leaf) => { | ||
|
|
@@ -84,7 +114,30 @@ async fn initialize<Context>( | |
|
|
||
| let scheduled_paras = collation_manager.assignments(); | ||
|
|
||
| let backend = Db::new(MAX_STORED_SCORES_PER_PARA).await; | ||
| // Create PersistentDb with disk persistence | ||
| let (backend, task) = match PersistentDb::new( | ||
| db.clone(), | ||
| reputation_config, | ||
| MAX_STORED_SCORES_PER_PARA, | ||
| ) | ||
| .await | ||
| { | ||
| Ok(result) => result, | ||
| Err(e) => { | ||
| gum::error!( | ||
| target: LOG_TARGET, | ||
| error = ?e, | ||
| "Failed to initialize persistent reputation DB" | ||
| ); | ||
| return Err(FatalError::ReputationDbInit(e)); | ||
| }, | ||
| }; | ||
|
|
||
| // Background task for async writes | ||
| ctx.spawn_blocking("collator-reputation-persistence-task", task) | ||
| .map_err(|e| FatalError::SpawnTask(e.to_string()))?; | ||
|
|
||
| gum::debug!(target: LOG_TARGET, "Spawned background reputation persistence task"); | ||
AlexandruCihodaru marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| match PeerManager::startup(backend, ctx.sender(), scheduled_paras.into_iter().collect()) | ||
| .await | ||
|
|
@@ -134,9 +187,21 @@ fn create_timer(maybe_delay: Option<Duration>) -> Fuse<Pin<Box<dyn Future<Output | |
| timer.fuse() | ||
| } | ||
|
|
||
| /// Create the persistence timer that fires after the given interval. | ||
| fn create_persistence_timer(interval: Duration) -> Fuse<Pin<Box<dyn Future<Output = ()> + Send>>> { | ||
| let delay: Pin<Box<dyn Future<Output = ()> + Send>> = Box::pin(Delay::new(interval)); | ||
| delay.fuse() | ||
| } | ||
|
|
||
| #[overseer::contextbounds(CollatorProtocol, prefix = self::overseer)] | ||
| async fn run_inner<Context>(mut ctx: Context, mut state: State<Db>) -> FatalResult<()> { | ||
| async fn run_inner<Context>( | ||
| mut ctx: Context, | ||
| mut state: State<PersistentDb>, | ||
| persist_interval: Duration, | ||
| ) -> FatalResult<()> { | ||
| let mut timer = create_timer(None); | ||
| let mut persistence_timer = create_persistence_timer(persist_interval); | ||
|
|
||
| loop { | ||
| select! { | ||
| // Calling `fuse()` here is useless, because the termination state of the resulting | ||
|
|
@@ -154,7 +219,11 @@ async fn run_inner<Context>(mut ctx: Context, mut state: State<Db>) -> FatalResu | |
| msg, | ||
| ).await; | ||
| } | ||
| Ok(FromOrchestra::Signal(OverseerSignal::Conclude)) | Err(_) => break, | ||
| Ok(FromOrchestra::Signal(OverseerSignal::Conclude)) | Err(_) => { | ||
| // Persist to disk before shutdown | ||
| state.persist_reputations().await; | ||
| break | ||
| }, | ||
| Ok(FromOrchestra::Signal(OverseerSignal::BlockFinalized(hash, number))) => { | ||
| state.handle_finalized_block(ctx.sender(), hash, number).await?; | ||
| }, | ||
|
|
@@ -168,6 +237,12 @@ async fn run_inner<Context>(mut ctx: Context, mut state: State<Db>) -> FatalResu | |
| // We don't need to do anything specific here. | ||
| // If the timer expires, we only need to trigger the advertisement fetching logic. | ||
| }, | ||
| _ = &mut persistence_timer => { | ||
| // Periodic persistence - write reputation DB to disk | ||
| state.background_persist_reputations(); | ||
| // Reset the timer for the next interval | ||
| persistence_timer = create_persistence_timer(persist_interval); | ||
| }, | ||
| } | ||
|
|
||
| // Now try triggering advertisement fetching, if we have room in any of the active leaves | ||
|
|
@@ -187,7 +262,7 @@ async fn run_inner<Context>(mut ctx: Context, mut state: State<Db>) -> FatalResu | |
| /// The main message receiver switch. | ||
| async fn process_msg<Sender: CollatorProtocolSenderTrait>( | ||
| sender: &mut Sender, | ||
| state: &mut State<Db>, | ||
| state: &mut State<PersistentDb>, | ||
| msg: CollatorProtocolMessage, | ||
| ) { | ||
| use CollatorProtocolMessage::*; | ||
|
|
@@ -241,7 +316,7 @@ async fn process_msg<Sender: CollatorProtocolSenderTrait>( | |
| /// Bridge event switch. | ||
| async fn handle_network_msg<Sender: CollatorProtocolSenderTrait>( | ||
| sender: &mut Sender, | ||
| state: &mut State<Db>, | ||
| state: &mut State<PersistentDb>, | ||
| bridge_message: NetworkBridgeEvent<net_protocol::CollatorProtocolMessage>, | ||
| ) -> Result<()> { | ||
| use NetworkBridgeEvent::*; | ||
|
|
@@ -289,7 +364,7 @@ async fn handle_network_msg<Sender: CollatorProtocolSenderTrait>( | |
|
|
||
| async fn process_incoming_peer_message<Sender: CollatorProtocolSenderTrait>( | ||
| sender: &mut Sender, | ||
| state: &mut State<Db>, | ||
| state: &mut State<PersistentDb>, | ||
| origin: PeerId, | ||
| msg: CollationProtocols< | ||
| protocol_v1::CollatorProtocolMessage, | ||
|
|
||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.