node.PublicKey = fmt.Sprintf("%v", node.XPub.PublicKey().String())
}
- ormNode := &orm.Node{PublicKey: node.PublicKey}
- if err := m.db.Where(&orm.Node{PublicKey: node.PublicKey}).First(ormNode).Error; err != nil && err != gorm.ErrRecordNotFound {
+ ormNode := &orm.Node{
+ IP: node.IP,
+ Port: node.Port,
+ }
+ if err := m.db.Where(ormNode).First(ormNode).Error; err != nil && err != gorm.ErrRecordNotFound {
return err
}
+ ormNode.PublicKey = node.PublicKey
if node.XPub != nil {
ormNode.Xpub = node.XPub.String()
}
- ormNode.IP = node.IP
- ormNode.Port = node.Port
- return m.db.Where(&orm.Node{PublicKey: ormNode.PublicKey}).
- Assign(&orm.Node{
- Xpub: ormNode.Xpub,
- IP: ormNode.IP,
- Port: ormNode.Port,
- }).FirstOrCreate(ormNode).Error
+ return m.db.Save(ormNode).Error
}
// TODO: maybe return connected nodes here for checkStatus
return err
}
+ if ormNode.Status == common.NodeOfflineStatus {
+ return fmt.Errorf("node %s status error", ormNode.PublicKey)
+ }
+
log.WithFields(log.Fields{"ping": peerInfo.Ping}).Debug("peerInfo")
ping, err := time.ParseDuration(peerInfo.Ping)
if err != nil {
// update latest liveness
latestLiveness := ormNodeLivenesses[0]
- // if latestLiveness.Status == common.NodeOfflineStatus {
- // return fmt.Errorf("node %s latest liveness status error", ormNode.PublicKey)
- // }
-
lantencyMS := ping.Nanoseconds() / 1000
if lantencyMS != 0 {
- latestLiveness.AvgLantencyMS = sql.NullInt64{
- Int64: (latestLiveness.AvgLantencyMS.Int64*int64(latestLiveness.PongTimes) + lantencyMS) / int64(latestLiveness.PongTimes+1),
+ ormNode.AvgLantencyMS = sql.NullInt64{
+ Int64: (ormNode.AvgLantencyMS.Int64*int64(latestLiveness.PongTimes) + lantencyMS) / int64(latestLiveness.PongTimes+1),
Valid: true,
}
}