From: Paladz Date: Wed, 25 Jul 2018 07:42:56 +0000 (+0800) Subject: edit sync logic, make it fast (#1176) X-Git-Tag: v1.0.5~5^2~1 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=9564506127286d542bbc91ae8f8c32db9e5d9f70;p=bytom%2Fbytom.git edit sync logic, make it fast (#1176) * edit sync logic, make it fast * fix ci error --- diff --git a/netsync/block_keeper.go b/netsync/block_keeper.go index 3a96d15b..637744b6 100644 --- a/netsync/block_keeper.go +++ b/netsync/block_keeper.go @@ -21,7 +21,7 @@ const ( ) var ( - maxBlockPerMsg = 128 + maxBlockPerMsg = uint64(128) maxBlockHeadersPerMsg = uint64(2048) syncTimeout = 30 * time.Second @@ -182,7 +182,7 @@ func (bk *blockKeeper) locateBlocks(locator []*bc.Hash, stopHash *bc.Hash) ([]*t blocks := []*types.Block{} for i, header := range headers { - if i >= maxBlockPerMsg { + if uint64(i) >= maxBlockPerMsg { break } @@ -367,10 +367,16 @@ func (bk *blockKeeper) startSync() bool { return true } + blockHeight := bk.chain.BestBlockHeight() peer = bk.peers.bestPeer(consensus.SFFullNode) - if peer != nil && peer.Height() > bk.chain.BestBlockHeight() { + if peer != nil && peer.Height() > blockHeight { bk.syncPeer = peer - if err := bk.regularBlockSync(peer.Height()); err != nil { + targetHeight := blockHeight + maxBlockPerMsg + if targetHeight > peer.Height() { + targetHeight = peer.Height() + } + + if err := bk.regularBlockSync(targetHeight); err != nil { log.WithField("err", err).Warning("fail on regularBlockSync") bk.peers.errorHandler(peer.ID(), err) return false