More logging close to the code that fails often

This commit is contained in:
Zahary Karadjov 2019-01-21 21:42:37 +02:00
parent eed9ea8f0a
commit a9c026b957
4 changed files with 25 additions and 11 deletions

View File

@ -262,6 +262,8 @@ proc scheduleEpochActions(node: BeaconNode, epoch: uint64) =
## attestations from our attached validators. ## attestations from our attached validators.
doAssert node != nil doAssert node != nil
debug "Scheduling epoch actions", epoch
# TODO: this copy of the state shouldn't be necessary, but please # TODO: this copy of the state shouldn't be necessary, but please
# see the comments in `get_beacon_proposer_index` # see the comments in `get_beacon_proposer_index`
var nextState = node.beaconState var nextState = node.beaconState
@ -299,19 +301,30 @@ proc scheduleEpochActions(node: BeaconNode, epoch: uint64) =
proc processBlocks*(node: BeaconNode) = proc processBlocks*(node: BeaconNode) =
node.network.subscribe(topicBeaconBlocks) do (newBlock: BeaconBlock): node.network.subscribe(topicBeaconBlocks) do (newBlock: BeaconBlock):
info "Block received", slot = newBlock.slot, info "Block received", slot = newBlock.slot,
stateRoot = shortHash(newBlock.state_root) stateRoot = shortHash(newBlock.state_root),
currentStateSlot = node.beaconState.slot
# TODO: This should be replaced with the real fork-choice rule
if newBlock.slot <= node.beaconState.slot:
debug "Ignoring block"
return
let newBlockRoot = hash_tree_root_final(newBlock) let newBlockRoot = hash_tree_root_final(newBlock)
var state = node.beaconState
for slot in node.beaconState.slot + 1 ..< newBlock.slot: for slot in node.beaconState.slot + 1 ..< newBlock.slot:
info "Skipping block", slot info "Skipping block", slot
let ok = updateState(node.beaconState, node.headBlockRoot, none[BeaconBlock](), {}) let ok = updateState(state, node.headBlockRoot, none[BeaconBlock](), {})
doAssert ok
let ok = updateState(node.beaconState, node.headBlockRoot, some(newBlock), {}) let ok = updateState(state, node.headBlockRoot, some(newBlock), {})
doAssert ok if not ok:
debug "Ignoring non-validating block"
return
node.headBlock = newBlock node.headBlock = newBlock
node.headBlockRoot = newBlockRoot node.headBlockRoot = newBlockRoot
node.beaconState = state
# TODO: # TODO:
# #
@ -334,7 +347,7 @@ proc processBlocks*(node: BeaconNode) =
node.attestationPool.add(a, node.beaconState) node.attestationPool.add(a, node.beaconState)
dynamicLogScope(node = node.config.tcpPort - 50000): dynamicLogScope(node = node.config.tcpPort - 50000):
let epoch = node.beaconState.slot.epoch let epoch = node.beaconState.timeSinceGenesis().toSlot div EPOCH_LENGTH
node.scheduleEpochActions(epoch) node.scheduleEpochActions(epoch)
runForever() runForever()
@ -348,7 +361,8 @@ proc createPidFile(filename: string) =
when isMainModule: when isMainModule:
let config = load BeaconNodeConf let config = load BeaconNodeConf
setLogLevel(config.logLevel) if config.logLevel != LogLevel.NONE:
setLogLevel(config.logLevel)
case config.cmd case config.cmd
of createChain: of createChain:

View File

@ -71,7 +71,7 @@ proc main() =
withdrawal_credentials: withdrawalCredentials, withdrawal_credentials: withdrawalCredentials,
randao_commitment: randaoCommitment))) randao_commitment: randaoCommitment)))
startupData.genesisTime = (now() div 1000) + 10 startupData.genesisTime = (now() div 1000)
writeFile(outPath / "startup.json", startupData) writeFile(outPath / "startup.json", startupData)

View File

@ -1,2 +1,2 @@
simulation-data data/

View File

@ -9,7 +9,7 @@ set -eu
NUMBER_OF_VALIDATORS=99 NUMBER_OF_VALIDATORS=99
cd $(dirname "$0") cd $(dirname "$0")
SIMULATION_DIR=$PWD/simulation-data SIMULATION_DIR=$PWD/data
mkdir -p "$SIMULATION_DIR" mkdir -p "$SIMULATION_DIR"
STARTUP_FILE="$SIMULATION_DIR/startup.json" STARTUP_FILE="$SIMULATION_DIR/startup.json"
@ -38,7 +38,7 @@ if [ ! -f $SNAPSHOT_FILE ]; then
--out:$SNAPSHOT_FILE --out:$SNAPSHOT_FILE
fi fi
MASTER_NODE_ADDRESS_FILE="$SIMULATION_DIR/data-0/beacon_node.address" MASTER_NODE_ADDRESS_FILE="$SIMULATION_DIR/node-0/beacon_node.address"
# Delete any leftover address files from a previous session # Delete any leftover address files from a previous session
if [ -f $MASTER_NODE_ADDRESS_FILE ]; then if [ -f $MASTER_NODE_ADDRESS_FILE ]; then
@ -57,7 +57,7 @@ for i in $(seq 0 9); do
done done
fi fi
DATA_DIR=$SIMULATION_DIR/data-$i DATA_DIR=$SIMULATION_DIR/node-$i
$BEACON_NODE_BIN \ $BEACON_NODE_BIN \
--dataDir:"$DATA_DIR" \ --dataDir:"$DATA_DIR" \