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 {
NodeOfflineStatus
)
-var StatusMap = map[uint8]string{
+var StatusLookupTable = map[uint8]string{
NodeUnknownStatus: "unknown",
NodeHealthyStatus: "healthy",
NodeCongestedStatus: "congested",
// 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 {
}
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
}
"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"
}
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
}