Fix light client startup (build_select_chain returns Result<Option>) (#2574)

* fix light client strtup (build_select_chain -> Option)

* fixed node template compilation

* Update core/service/src/lib.rs

Co-Authored-By: Benjamin Kampmann <ben.kampmann@googlemail.com>
This commit is contained in:
Svyatoslav Nikolsky
2019-05-14 14:38:30 +03:00
committed by André Silva
parent 132984adf5
commit 9a14ba0555
5 changed files with 38 additions and 27 deletions
+11 -9
View File
@@ -344,7 +344,7 @@ pub trait ServiceFactory: 'static + Sized {
fn build_full_import_queue(
config: &mut FactoryFullConfiguration<Self>,
_client: Arc<FullClient<Self>>,
_select_chain: Self::SelectChain
_select_chain: Self::SelectChain,
) -> Result<Self::FullImportQueue, error::Error> {
if let Some(name) = config.chain_spec.consensus_engine() {
match name {
@@ -415,7 +415,7 @@ pub trait Components: Sized + 'static {
fn build_import_queue(
config: &mut FactoryFullConfiguration<Self::Factory>,
client: Arc<ComponentClient<Self>>,
select_chain: Self::SelectChain,
select_chain: Option<Self::SelectChain>,
) -> Result<Self::ImportQueue, error::Error>;
/// Finality proof provider for serving network requests.
@@ -427,7 +427,7 @@ pub trait Components: Sized + 'static {
fn build_select_chain(
config: &mut FactoryFullConfiguration<Self::Factory>,
client: Arc<ComponentClient<Self>>
) -> Result<Self::SelectChain, error::Error>;
) -> Result<Option<Self::SelectChain>, error::Error>;
}
/// A struct that implement `Components` for the full client.
@@ -506,16 +506,18 @@ impl<Factory: ServiceFactory> Components for FullComponents<Factory> {
fn build_import_queue(
config: &mut FactoryFullConfiguration<Self::Factory>,
client: Arc<ComponentClient<Self>>,
select_chain: Self::SelectChain,
select_chain: Option<Self::SelectChain>,
) -> Result<Self::ImportQueue, error::Error> {
let select_chain = select_chain
.ok_or_else(|| error::Error::from(error::ErrorKind::SelectChainRequired))?;
Factory::build_full_import_queue(config, client, select_chain)
}
fn build_select_chain(
config: &mut FactoryFullConfiguration<Self::Factory>,
client: Arc<ComponentClient<Self>>
) -> Result<Self::SelectChain, error::Error> {
Self::Factory::build_select_chain(config, client)
) -> Result<Option<Self::SelectChain>, error::Error> {
Self::Factory::build_select_chain(config, client).map(Some)
}
fn build_finality_proof_provider(
@@ -596,7 +598,7 @@ impl<Factory: ServiceFactory> Components for LightComponents<Factory> {
fn build_import_queue(
config: &mut FactoryFullConfiguration<Self::Factory>,
client: Arc<ComponentClient<Self>>,
_select_chain: Self::SelectChain,
_select_chain: Option<Self::SelectChain>,
) -> Result<Self::ImportQueue, error::Error> {
Factory::build_light_import_queue(config, client)
}
@@ -609,8 +611,8 @@ impl<Factory: ServiceFactory> Components for LightComponents<Factory> {
fn build_select_chain(
_config: &mut FactoryFullConfiguration<Self::Factory>,
_client: Arc<ComponentClient<Self>>
) -> Result<Self::SelectChain, error::Error> {
Err("Fork choice doesn't happen on light clients.".into())
) -> Result<Option<Self::SelectChain>, error::Error> {
Ok(None)
}
}