update consensus information in sync loop

pull/1738/head
Chao Ma 5 years ago committed by chao
parent 8458f581ea
commit 1ee9a599d0
  1. 7
      api/service/syncing/syncing.go
  2. 9
      node/node_syncing.go
  3. 7
      scripts/setup_bls_build_flags.sh

@ -15,6 +15,7 @@ import (
"github.com/ethereum/go-ethereum/rlp"
"github.com/harmony-one/harmony/api/service/syncing/downloader"
pb "github.com/harmony-one/harmony/api/service/syncing/downloader/proto"
"github.com/harmony-one/harmony/consensus"
"github.com/harmony-one/harmony/core"
"github.com/harmony-one/harmony/core/types"
"github.com/harmony-one/harmony/internal/ctxerror"
@ -741,7 +742,7 @@ func (ss *StateSync) IsOutOfSync(bc *core.BlockChain) bool {
}
// SyncLoop will keep syncing with peers until catches up
func (ss *StateSync) SyncLoop(bc *core.BlockChain, worker *worker.Worker, isBeacon bool) {
func (ss *StateSync) SyncLoop(bc *core.BlockChain, worker *worker.Worker, isBeacon bool, consensus *consensus.Consensus) {
if !isBeacon {
ss.RegisterNodeInfo()
}
@ -754,6 +755,7 @@ Loop:
case <-ticker.C:
otherHeight := ss.getMaxPeerHeight(isBeacon)
currentHeight := bc.CurrentBlock().NumberU64()
if currentHeight >= otherHeight {
utils.Logger().Info().Msgf("[SYNC] Node is now IN SYNC! (isBeacon: %t, ShardID: %d, otherHeight: %d, currentHeight: %d)", isBeacon, bc.ShardID(), otherHeight, currentHeight)
break Loop
@ -767,6 +769,9 @@ Loop:
}
ss.ProcessStateSync(startHash[:], size, bc, worker)
ss.purgeOldBlocksFromCache()
if consensus != nil {
consensus.UpdateConsensusInformation()
}
}
}
ss.purgeAllBlocksFromCache()

@ -192,7 +192,7 @@ func (node *Node) DoBeaconSyncing() {
continue
}
}
node.beaconSync.SyncLoop(node.Beaconchain(), node.BeaconWorker, true)
node.beaconSync.SyncLoop(node.Beaconchain(), node.BeaconWorker, true, nil)
time.Sleep(BeaconSyncFrequency * time.Second)
}
}
@ -234,12 +234,7 @@ SyncingLoop:
if willJoinConsensus {
node.Consensus.BlocksNotSynchronized()
}
node.stateSync.SyncLoop(bc, worker, false)
// update the consensus and committee information at the end of epoch including explorer node
// only when the syncing shard is different than node's own shard, we don't update it
if node.Blockchain().ShardID() == bc.ShardID() && core.ShardingSchedule.IsLastBlock(bc.CurrentBlock().NumberU64()) {
node.Consensus.UpdateConsensusInformation()
}
node.stateSync.SyncLoop(bc, worker, false, node.Consensus)
if willJoinConsensus {
node.stateMutex.Lock()
node.State = NodeReadyForConsensus

@ -35,3 +35,10 @@ case $OS in
export DYLD_FALLBACK_LIBRARY_PATH=$LD_LIBRARY_PATH
;;
esac
if [ "$1" == '-v' ]; then
echo "{ \"CGO_CFLAGS\" : \"$CGO_CFLAGS\",
\"CGO_LDFLAGS\" : \"$CGO_LDFLAGS\",
\"LD_LIBRARY_PATH\" : \"$LD_LIBRARY_PATH\",
\"DYLD_FALLBACK_LIBRARY_PATH\" : \"$DYLD_FALLBACK_LIBRARY_PATH\"}" | jq "."
fi

Loading…
Cancel
Save