- if err := dbTx.Model(&orm.NodeLiveness{}).Where("node_id = ? AND status != ?", ormNode.ID, common.NodeOfflineStatus).
- UpdateColumn(&orm.NodeLiveness{
- BestHeight: ormNodeLiveness.BestHeight,
- AvgLantencyMS: ormNodeLiveness.AvgLantencyMS,
- }).FirstOrCreate(ormNodeLiveness).Error; err != nil {
+
+ lantencyMS := ping.Nanoseconds() / 1000
+ if lantencyMS != 0 {
+ ormNodeLiveness.AvgLantencyMS = sql.NullInt64{
+ Int64: (ormNodeLiveness.AvgLantencyMS.Int64*int64(ormNodeLiveness.PongTimes) + lantencyMS) / int64(ormNodeLiveness.PongTimes+1),
+ Valid: true,
+ }
+ }
+ ormNodeLiveness.PongTimes += 1
+ ormNodeLiveness.BestHeight = peerInfo.Height
+ if err := dbTx.Save(ormNodeLiveness).Error; err != nil {