MCPcopy Index your code
hub / github.com/CovenantSQL/CovenantSQL / getPeers

Function getPeers

client/driver.go:633–674  ·  view source on GitHub ↗
(dbID proto.DatabaseID, privKey *asymmetric.PrivateKey)

Source from the content-addressed store, hash-verified

631}
632
633func getPeers(dbID proto.DatabaseID, privKey *asymmetric.PrivateKey) (peers *proto.Peers, err error) {
634 defer func() {
635 log.WithFields(log.Fields{
636 "db": dbID,
637 "peers": peers,
638 }).WithError(err).Debug("get peers for database")
639 }()
640
641 profileReq := &types.QuerySQLChainProfileReq{}
642 profileResp := &types.QuerySQLChainProfileResp{}
643 profileReq.DBID = dbID
644 err = rpc.RequestBP(route.MCCQuerySQLChainProfile.String(), profileReq, profileResp)
645 if err != nil {
646 err = errors.Wrap(err, "get sqlchain profile failed in getPeers")
647 return
648 }
649
650 nodeIDs := make([]proto.NodeID, len(profileResp.Profile.Miners))
651 if len(profileResp.Profile.Miners) <= 0 {
652 err = errors.Wrap(ErrInvalidProfile, "unexpected error in getPeers")
653 return
654 }
655 for i, mi := range profileResp.Profile.Miners {
656 nodeIDs[i] = mi.NodeID
657 }
658 peers = &proto.Peers{
659 PeersHeader: proto.PeersHeader{
660 Leader: nodeIDs[0],
661 Servers: nodeIDs[:],
662 },
663 }
664 err = peers.Sign(privKey)
665 if err != nil {
666 err = errors.Wrap(err, "sign peers failed in getPeers")
667 return
668 }
669
670 // set peers in the updater cache
671 peerList.Store(dbID, peers)
672
673 return
674}
675
676func allocateConnAndSeq() (connID uint64, seqNo uint64) {
677 connIDLock.Lock()

Callers 3

runPeerListUpdaterFunction · 0.70
cacheGetPeersFunction · 0.70
TestRunPeerListUpdaterFunction · 0.70

Calls 5

WithFieldsFunction · 0.92
DebugMethod · 0.80
WithErrorMethod · 0.80
SignMethod · 0.65
StringMethod · 0.45

Tested by 1

TestRunPeerListUpdaterFunction · 0.56