Adds manager duties to validator runtime

This commit is contained in:
Age Manning 2019-03-25 17:47:23 +11:00
parent 02039be400
commit 3ad18b4367
No known key found for this signature in database
GPG Key ID: 05EED64B79E06A93
2 changed files with 29 additions and 3 deletions

View File

@ -54,6 +54,6 @@ fn main() {
// start the validator service. // start the validator service.
match ValidatorService::start(config, log.clone()) { match ValidatorService::start(config, log.clone()) {
Ok(_) => info!(log, "Validator client shutdown successfully."), Ok(_) => info!(log, "Validator client shutdown successfully."),
Err(e) => error!(log, "Validator exited due to {:?}", e), Err(e) => error!(log, "Validator exited due to: {}", e.to_string()),
} }
} }

View File

@ -2,6 +2,7 @@
use crate::attester_service::{AttestationGrpcClient, AttesterService}; use crate::attester_service::{AttestationGrpcClient, AttesterService};
use crate::block_producer_service::{BeaconBlockGrpcClient, BlockProducerService}; use crate::block_producer_service::{BeaconBlockGrpcClient, BlockProducerService};
use crate::config::Config as ValidatorConfig; use crate::config::Config as ValidatorConfig;
use crate::duties::PollOutcome;
use crate::duties::{DutiesManager, DutiesManagerService, EpochDutiesMap}; use crate::duties::{DutiesManager, DutiesManagerService, EpochDutiesMap};
use crate::error as error_chain; use crate::error as error_chain;
use crate::error::ErrorKind; use crate::error::ErrorKind;
@ -84,7 +85,8 @@ impl Service {
if SystemTime::now() if SystemTime::now()
.duration_since(SystemTime::UNIX_EPOCH) .duration_since(SystemTime::UNIX_EPOCH)
.unwrap() .unwrap()
> Duration::from_secs(info.genesis_time) .as_secs()
< info.genesis_time
{ {
warn!( warn!(
log, log,
@ -239,8 +241,32 @@ impl Service {
Ok(slot) => slot.expect("Genesis is in the future"), Ok(slot) => slot.expect("Genesis is in the future"),
}; };
debug_assert!(
current_slot > service.current_slot,
"The Timer should poll a new slot"
);
debug!(service.log, "Processing slot: {}", current_slot.as_u64()); debug!(service.log, "Processing slot: {}", current_slot.as_u64());
manager.poll();
// check for new duties
match manager.poll() {
Err(error) => {
error!(service.log, "Epoch duties poll error"; "error" => format!("{:?}", error))
}
Ok(PollOutcome::NoChange(epoch)) => {
debug!(service.log, "No change in duties"; "epoch" => epoch)
}
Ok(PollOutcome::DutiesChanged(epoch, duties)) => {
info!(service.log, "Duties changed (potential re-org)"; "epoch" => epoch, "duties" => format!("{:?}", duties))
}
Ok(PollOutcome::NewDuties(epoch, duties)) => {
info!(service.log, "New duties obtained"; "epoch" => epoch, "duties" => format!("{:?}", duties))
}
Ok(PollOutcome::UnknownValidatorOrEpoch(epoch)) => {
error!(service.log, "Epoch or validator unknown"; "epoch" => epoch)
}
};
Ok(()) Ok(())
})) }))
.map_err(|e| format!("Service thread failed: {:?}", e))?; .map_err(|e| format!("Service thread failed: {:?}", e))?;