OSDN Git Service

fix
authorHAOYUatHZ <haoyu@protonmail.com>
Sat, 31 Aug 2019 07:15:39 +0000 (15:15 +0800)
committerHAOYUatHZ <haoyu@protonmail.com>
Sat, 31 Aug 2019 07:15:39 +0000 (15:15 +0800)
toolbar/precog/api/handler.go
toolbar/precog/common/const.go
toolbar/precog/database/orm/node.go
toolbar/precog/monitor/monitor.go
toolbar/precog/monitor/stats.go

index 17d940c..e32527f 100644 (file)
@@ -9,6 +9,7 @@ import (
 
 type listNodesReq struct{ serverCommon.Display }
 
+// TODO: fix PaginationQuery???
 func (s *Server) ListNodes(c *gin.Context, listNodesReq *listNodesReq, query *serverCommon.PaginationQuery) ([]*orm.Node, error) {
        var ormNodes []*orm.Node
        if err := s.db.Offset(query.Start).Limit(query.Limit).Find(&ormNodes).Error; err != nil {
index d22f93b..3cbf5de 100644 (file)
@@ -8,7 +8,7 @@ const (
        NodeOfflineStatus
 )
 
-var StatusMap = map[uint8]string{
+var StatusLookupTable = map[uint8]string{
        NodeUnknownStatus:   "unknown",
        NodeHealthyStatus:   "healthy",
        NodeCongestedStatus: "congested",
index f0bb345..120e950 100644 (file)
@@ -24,7 +24,7 @@ type Node struct {
 }
 
 func (n *Node) MarshalJSON() ([]byte, error) {
-       status, ok := common.StatusMap[n.Status]
+       status, ok := common.StatusLookupTable[n.Status]
        if !ok {
                return nil, errors.New("fail to look up status")
        }
index b8bb818..cd5e77f 100644 (file)
@@ -27,9 +27,10 @@ import (
 // TODO:
 // 1. moniker 理论是安全的,只是记得测试一下,这么改不会让vapor node出坑
 // 2. StatusMap 感觉没什么问题,double check一下别的出名项目是不是也是这么叫的
+
 // 3. toolbar/precog/monitor/stats.go FirstOrCreate&Update 弱弱的问一下,直接save会出事么?
 // 4. 碰到一个玄学问题,究竟是以ip为单位,还是pubkey为单位。 如果同一个pubkey出现在2个不同的ip,会不会让数据混乱?
-// 6. NodeLiveness应该是存每次的通讯记录?至于一些统计数据之类的都丢node上去?
+// 6. ***NodeLiveness应该是存每次的通讯记录?至于一些统计数据之类的都丢node上去?
 // 7. m这个为什么需要锁呀?一个是节点发现,一个是生命探测,中间交互都是数据库把?
 
 type monitor struct {
@@ -122,16 +123,16 @@ func (m *monitor) makeSwitch() error {
        }
 
        m.peers = peers.NewPeerSet(m.sw)
-       return m.prepareReactors(m.peers)
+       return m.prepareReactors()
 }
 
-func (m *monitor) prepareReactors(peers *peers.PeerSet) error {
+func (m *monitor) prepareReactors() error {
        dispatcher := event.NewDispatcher()
        // add ConsensusReactor for consensusChannel
-       _ = consensusmgr.NewManager(m.sw, m.chain, peers, dispatcher)
+       _ = consensusmgr.NewManager(m.sw, m.chain, m.peers, dispatcher)
        fastSyncDB := dbm.NewDB("fastsync", m.nodeCfg.DBBackend, m.nodeCfg.DBDir())
        // add ProtocolReactor to handle msgs
-       if _, err := chainmgr.NewManager(m.nodeCfg, m.sw, m.chain, m.txPool, dispatcher, peers, fastSyncDB); err != nil {
+       if _, err := chainmgr.NewManager(m.nodeCfg, m.sw, m.chain, m.txPool, dispatcher, m.peers, fastSyncDB); err != nil {
                return err
        }
 
index 7156019..92090b3 100644 (file)
@@ -10,7 +10,6 @@ import (
 
        "github.com/vapor/crypto/ed25519/chainkd"
        "github.com/vapor/netsync/peers"
-       "github.com/vapor/p2p"
        "github.com/vapor/toolbar/precog/common"
        "github.com/vapor/toolbar/precog/config"
        "github.com/vapor/toolbar/precog/database/orm"
@@ -90,7 +89,9 @@ func (m *monitor) processConnectedPeer(ormNode *orm.Node) error {
        }
 
        ormNodeLiveness.PongTimes += 1
-       ormNode.Status = common.NodeUnknownStatus
+       if ormNode.Status == common.NodeOfflineStatus {
+               ormNode.Status = common.NodeUnknownStatus
+       }
        ormNodeLiveness.Node = ormNode
        return m.db.Save(ormNodeLiveness).Error
 }