}
func (m *monitor) dialNodes() error {
- // m.Lock()
+ m.Lock()
log.Info("Start to reconnect to nodes...")
var nodes []*orm.Node
if err := m.db.Model(&orm.Node{}).Find(&nodes).Error; err != nil {
// connected peers will be skipped in switch.DialPeers()
m.sw.DialPeers(addresses)
log.Info("DialPeers done.")
- // m.Unlock()
+ m.Unlock()
return nil
}
continue
}
log.Info("discover new node: ", node)
- // m.Lock()
+ m.Lock()
+
if err := m.upSertNode(&config.Node{
PublicKey: node.ID.String(),
Host: node.IP.String(),
Port: node.TCP,
- }); err != nil {
+ }); err == nil {
+ nodeMap[node.ID.String()] = node
+ } else {
log.Error(err)
}
- nodeMap[node.ID.String()] = node
- // m.Unlock()
+ m.Unlock()
}
}
"os"
"os/user"
"strings"
- // "sync"
+ "sync"
"time"
"github.com/jinzhu/gorm"
)
type monitor struct {
- // *sync.RWMutex
+ *sync.RWMutex
cfg *config.Config
db *gorm.DB
nodeCfg *vaporCfg.Config
}
return &monitor{
- // RWMutex: &sync.RWMutex{},
+ RWMutex: &sync.RWMutex{},
cfg: cfg,
db: db,
nodeCfg: nodeCfg,
bestHeight := uint64(0)
ticker := time.NewTicker(time.Duration(m.cfg.CheckFreqSeconds) * time.Second)
for range ticker.C {
- // m.Lock()
+ m.Lock()
log.Info("connected peers: ", m.sw.GetPeers().List())
for _, peer := range m.sw.GetPeers().List() {
peers.RemovePeer(p.ID())
}
log.Info("Disonnect all peers.")
- // m.Unlock()
+ m.Unlock()
}
}
// PingTimes uint64
// PongTimes uint64
}
- if err := m.db.Model(&orm.NodeLiveness{}).Where("node_id = ? AND status != ?", ormNode.ID, common.NodeOfflineStatus).
+ return m.db.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 {
- return err
- }
-
- return nil
+ }).FirstOrCreate(ormNodeLiveness).Error
}