From 66fd1586ca09fde07e9660af3adb0492e67876d2 Mon Sep 17 00:00:00 2001 From: Paul Hauner Date: Mon, 9 Sep 2019 16:43:08 -0400 Subject: [PATCH] Add more logging around block/attn production --- beacon_node/beacon_chain/src/beacon_chain.rs | 23 +++++++++++++++++-- .../src/attestation_producer/mod.rs | 9 +++++--- validator_client/src/block_producer/mod.rs | 12 ++++++---- validator_client/src/service.rs | 17 ++++++++++++-- 4 files changed, 50 insertions(+), 11 deletions(-) diff --git a/beacon_node/beacon_chain/src/beacon_chain.rs b/beacon_node/beacon_chain/src/beacon_chain.rs index e88747d83..b026b15af 100644 --- a/beacon_node/beacon_chain/src/beacon_chain.rs +++ b/beacon_node/beacon_chain/src/beacon_chain.rs @@ -9,7 +9,7 @@ use lmd_ghost::LmdGhost; use operation_pool::DepositInsertStatus; use operation_pool::{OperationPool, PersistedOperationPool}; use parking_lot::{RwLock, RwLockReadGuard}; -use slog::{error, info, warn, Logger}; +use slog::{error, info, trace, warn, Logger}; use slot_clock::SlotClock; use ssz::Encode; use state_processing::per_block_processing::{ @@ -639,6 +639,14 @@ impl BeaconChain { metrics::inc_counter(&metrics::ATTESTATION_PRODUCTION_SUCCESSES); metrics::stop_timer(timer); + trace!( + self.log, + "Produced beacon attestation data"; + "beacon_block_root" => format!("{}", head_block_root), + "shard" => shard, + "slot" => state.slot + ); + Ok(AttestationData { beacon_block_root: head_block_root, source: state.current_justified_checkpoint.clone(), @@ -751,7 +759,7 @@ impl BeaconChain { // has a higher slot than the attestation. // // Permitting this would allow for attesters to vote on _future_ slots. - if attestation_slot > state.slot { + if state.slot > attestation_slot { Ok(AttestationProcessingOutcome::AttestsToFutureState { state: state.slot, attestation: attestation_slot, @@ -1270,6 +1278,14 @@ impl BeaconChain { metrics::inc_counter(&metrics::BLOCK_PRODUCTION_SUCCESSES); metrics::stop_timer(timer); + trace!( + self.log, + "Produced beacon block"; + "parent" => format!("{}", block.parent_root), + "attestations" => block.body.attestations.len(), + "slot" => block.slot + ); + Ok((block, state)) } @@ -1307,7 +1323,10 @@ impl BeaconChain { warn!( self.log, "Beacon chain re-org"; + "previous_head" => format!("{}", self.head().beacon_block_root), "previous_slot" => previous_slot, + "new_head_parent" => format!("{}", beacon_block.parent_root), + "new_head" => format!("{}", beacon_block_root), "new_slot" => new_slot ); } else { diff --git a/validator_client/src/attestation_producer/mod.rs b/validator_client/src/attestation_producer/mod.rs index e831b4c1c..6f4a5f304 100644 --- a/validator_client/src/attestation_producer/mod.rs +++ b/validator_client/src/attestation_producer/mod.rs @@ -50,9 +50,12 @@ impl<'a, B: BeaconNodeAttestation, S: Signer, E: EthSpec> AttestationProducer<'a /// Handle outputs and results from attestation production. pub fn handle_produce_attestation(&mut self, log: slog::Logger) { match self.produce_attestation() { - Ok(ValidatorEvent::AttestationProduced(_slot)) => { - info!(log, "Attestation produced"; "Validator" => format!("{}", self.signer)) - } + Ok(ValidatorEvent::AttestationProduced(slot)) => info!( + log, + "Attestation produced"; + "validator" => format!("{}", self.signer), + "slot" => slot, + ), Err(e) => error!(log, "Attestation production error"; "Error" => format!("{:?}", e)), Ok(ValidatorEvent::SignerRejection(_slot)) => { error!(log, "Attestation production error"; "Error" => "Signer could not sign the attestation".to_string()) diff --git a/validator_client/src/block_producer/mod.rs b/validator_client/src/block_producer/mod.rs index ca1e3a1d8..03d9f5946 100644 --- a/validator_client/src/block_producer/mod.rs +++ b/validator_client/src/block_producer/mod.rs @@ -59,9 +59,12 @@ impl<'a, B: BeaconNodeBlock, S: Signer, E: EthSpec> BlockProducer<'a, B, S, E> { /// Handle outputs and results from block production. pub fn handle_produce_block(&mut self, log: slog::Logger) { match self.produce_block() { - Ok(ValidatorEvent::BlockProduced(_slot)) => { - info!(log, "Block produced"; "Validator" => format!("{}", self.signer)) - } + Ok(ValidatorEvent::BlockProduced(slot)) => info!( + log, + "Block produced"; + "validator" => format!("{}", self.signer), + "slot" => slot, + ), Err(e) => error!(log, "Block production error"; "Error" => format!("{:?}", e)), Ok(ValidatorEvent::SignerRejection(_slot)) => { error!(log, "Block production error"; "Error" => "Signer Could not sign the block".to_string()) @@ -105,12 +108,13 @@ impl<'a, B: BeaconNodeBlock, S: Signer, E: EthSpec> BlockProducer<'a, B, S, E> { .produce_beacon_block(self.slot, &randao_reveal)? { if self.safe_to_produce(&block) { + let slot = block.slot; let domain = self .spec .get_domain(epoch, Domain::BeaconProposer, &self.fork); if let Some(block) = self.sign_block(block, domain) { self.beacon_node.publish_beacon_block(block)?; - Ok(ValidatorEvent::BlockProduced(self.slot)) + Ok(ValidatorEvent::BlockProduced(slot)) } else { Ok(ValidatorEvent::SignerRejection(self.slot)) } diff --git a/validator_client/src/service.rs b/validator_client/src/service.rs index 5169f67f8..ba4f3c133 100644 --- a/validator_client/src/service.rs +++ b/validator_client/src/service.rs @@ -359,7 +359,12 @@ impl Service format!("{}", signers[signer_index])); + info!( + log, + "Producing a block"; + "validator"=> format!("{}", signers[signer_index]), + "slot"=> slot + ); let signer = &signers[signer_index]; let mut block_producer = BlockProducer { fork, @@ -376,6 +381,9 @@ impl Service Service format!("{}", signers[signer_index])); + info!( + log, + "Producing an attestation"; + "validator"=> format!("{}", signers[signer_index]), + "slot"=> slot + ); let signer = &signers[signer_index]; let mut attestation_producer = AttestationProducer { fork,