|
|
@ -1,4 +1,4 @@ |
|
|
|
package sync |
|
|
|
package syncing |
|
|
|
|
|
|
|
|
|
|
|
import ( |
|
|
|
import ( |
|
|
|
"bufio" |
|
|
|
"bufio" |
|
|
@ -8,7 +8,6 @@ import ( |
|
|
|
|
|
|
|
|
|
|
|
"github.com/Workiva/go-datastructures/queue" |
|
|
|
"github.com/Workiva/go-datastructures/queue" |
|
|
|
"github.com/simple-rules/harmony-benchmark/blockchain" |
|
|
|
"github.com/simple-rules/harmony-benchmark/blockchain" |
|
|
|
"github.com/simple-rules/harmony-benchmark/node" |
|
|
|
|
|
|
|
"github.com/simple-rules/harmony-benchmark/p2p" |
|
|
|
"github.com/simple-rules/harmony-benchmark/p2p" |
|
|
|
proto_node "github.com/simple-rules/harmony-benchmark/proto/node" |
|
|
|
proto_node "github.com/simple-rules/harmony-benchmark/proto/node" |
|
|
|
) |
|
|
|
) |
|
|
@ -33,8 +32,7 @@ type SyncConfig struct { |
|
|
|
peers []SyncPeerConfig |
|
|
|
peers []SyncPeerConfig |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func StartBlockSyncing(node *node.Node) *blockchain.Blockchain { |
|
|
|
func StartBlockSyncing(peers []p2p.Peer) *blockchain.Blockchain { |
|
|
|
peers := node.Consensus.GetValidatorPeers() |
|
|
|
|
|
|
|
peer_number := len(peers) |
|
|
|
peer_number := len(peers) |
|
|
|
syncConfig := SyncConfig{ |
|
|
|
syncConfig := SyncConfig{ |
|
|
|
peers: make([]SyncPeerConfig, peer_number), |
|
|
|
peers: make([]SyncPeerConfig, peer_number), |
|
|
@ -117,11 +115,7 @@ TASK_LOOP: |
|
|
|
bc := &blockchain.Blockchain{ |
|
|
|
bc := &blockchain.Blockchain{ |
|
|
|
Blocks: make([]*blockchain.Block, blockSize), |
|
|
|
Blocks: make([]*blockchain.Block, blockSize), |
|
|
|
} |
|
|
|
} |
|
|
|
// loop to do syncing.
|
|
|
|
|
|
|
|
for { |
|
|
|
|
|
|
|
var wg sync.WaitGroup |
|
|
|
|
|
|
|
wg.Add(activePeerNumber) |
|
|
|
wg.Add(activePeerNumber) |
|
|
|
|
|
|
|
|
|
|
|
for _, configPeer := range syncConfig.peers { |
|
|
|
for _, configPeer := range syncConfig.peers { |
|
|
|
if configPeer.err != nil { |
|
|
|
if configPeer.err != nil { |
|
|
|
continue |
|
|
|
continue |
|
|
@ -151,7 +145,7 @@ TASK_LOOP: |
|
|
|
}(&configPeer, taskSyncQueue, bc) |
|
|
|
}(&configPeer, taskSyncQueue, bc) |
|
|
|
} |
|
|
|
} |
|
|
|
wg.Wait() |
|
|
|
wg.Wait() |
|
|
|
} |
|
|
|
return bc |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func getConsensus(syncConfig *SyncConfig) bool { |
|
|
|
func getConsensus(syncConfig *SyncConfig) bool { |