enable disputes for known chains, except for polkadot (#4464)

* enable disputes, for all known chains but polkadot

* chore: fmt

* don't propagate disputes either

* review

* remove disputes feature

* remove superfluous line

* Update node/service/src/lib.rs

Co-authored-by: Andronik Ordian <write@reusable.software>

* fixup

* allow being a dummy

* rialto

* add an enum, to make things work better

* overseer

* fix test

* comments

* move condition out

* excess arg

Co-authored-by: Andronik Ordian <write@reusable.software>
This commit is contained in:
Bernhard Schuster
2021-12-17 18:50:48 +01:00
committed by GitHub
parent fad55b95fa
commit 2457c26a08
26 changed files with 219 additions and 247 deletions
@@ -161,11 +161,16 @@ where
/// Create a new [`SelectRelayChain`] wrapping the given chain backend
/// and a handle to the overseer.
pub fn new_disputes_aware(backend: Arc<B>, overseer: Handle, metrics: Metrics) -> Self {
pub fn new_disputes_aware(
backend: Arc<B>,
overseer: Handle,
metrics: Metrics,
disputes_enabled: bool,
) -> Self {
tracing::debug!(
target: LOG_TARGET,
"Using {} chain selection algorithm",
if cfg!(feature = "disputes") {
if disputes_enabled {
"dispute aware relay"
} else {
// no disputes are queried, that logic is disabled
@@ -176,7 +181,10 @@ where
SelectRelayChain {
longest_chain: sc_consensus::LongestChain::new(backend.clone()),
selection: IsDisputesAwareWithOverseer::Yes(SelectRelayChainInner::new(
backend, overseer, metrics,
backend,
overseer,
metrics,
disputes_enabled,
)),
}
}
@@ -233,6 +241,7 @@ where
pub struct SelectRelayChainInner<B, OH> {
backend: Arc<B>,
overseer: OH,
disputes_enabled: bool,
metrics: Metrics,
}
@@ -243,8 +252,8 @@ where
{
/// Create a new [`SelectRelayChainInner`] wrapping the given chain backend
/// and a handle to the overseer.
pub fn new(backend: Arc<B>, overseer: OH, metrics: Metrics) -> Self {
SelectRelayChainInner { backend, overseer, metrics }
pub fn new(backend: Arc<B>, overseer: OH, metrics: Metrics, disputes_enabled: bool) -> Self {
SelectRelayChainInner { backend, overseer, metrics, disputes_enabled }
}
fn block_header(&self, hash: Hash) -> Result<PolkadotHeader, ConsensusError> {
@@ -282,6 +291,7 @@ where
backend: self.backend.clone(),
overseer: self.overseer.clone(),
metrics: self.metrics.clone(),
disputes_enabled: self.disputes_enabled,
}
}
}
@@ -371,7 +381,7 @@ where
let mut overseer = self.overseer.clone();
tracing::trace!(target: LOG_TARGET, ?best_leaf, "Longest chain");
let subchain_head = if cfg!(feature = "disputes") {
let subchain_head = if self.disputes_enabled {
let (tx, rx) = oneshot::channel();
overseer
.send_msg(
@@ -476,7 +486,7 @@ where
let lag = initial_leaf_number.saturating_sub(subchain_number);
self.metrics.note_approval_checking_finality_lag(lag);
let (lag, subchain_head) = if cfg!(feature = "disputes") {
let (lag, subchain_head) = if self.disputes_enabled {
// Prevent sending flawed data to the dispute-coordinator.
if Some(subchain_block_descriptions.len() as _) !=
subchain_number.checked_sub(target_number)