基于serf的数据库同步模块库
chenshijun
2019-09-27 803756f1de3f52027dbe7cf191c8d4a043a37662
searcher.go
@@ -2,7 +2,7 @@
import (
   "encoding/json"
   "fmt"
   "basic.com/valib/logger.git"
   "time"
   "github.com/hashicorp/memberlist"
@@ -57,7 +57,7 @@
   if err:= json.Unmarshal(b, &n);err ==nil {
      members[n.NodeID] = n
   } else {
      fmt.Println("NotifyMsg msg unmarshal err")
      logger.Error("NotifyMsg msg unmarshal err")
   }
}
@@ -70,11 +70,11 @@
   node := nodeInfo{}
   if err := json.Unmarshal(b, &node); err != nil {
      fmt.Println("Umarshal failed:", err)
      logger.Error("Umarshal failed:", err)
      return
   }
   fmt.Println(node)
   logger.Info(node)
}
func CreateSearchNode(key string) (*memberlist.Memberlist, error) {
@@ -87,7 +87,7 @@
   keyring, err := memberlist.NewKeyring(nil, []byte(key))
   if err != nil {
      fmt.Printf("Failed to restore keyring: %s", err)
      logger.Error("Failed to restore keyring: %s", err)
      return nil, err
   }
   conf.Keyring = keyring
@@ -98,18 +98,15 @@
func CreateSearchNodeWhitClose(key string, delay time.Duration) map[string]NodeInfo {
   m, err := CreateSearchNode(key)
   if err == nil {
      // fmt.Printf("Local member %s:%d\n", m.LocalNode().Addr, m.LocalNode().Port)
      //logger.Info("Local member %s:%d\n", m.LocalNode().Addr, m.LocalNode().Port)
      time.Sleep(delay)
      m.Shutdown()
      fmt.Println("CreateSearchNodeWhitClose after ",delay,",shutdown success")
   }
   return members
}
func CloseSearchNode(m *memberlist.Memberlist) error {
   fmt.Println("CloseSearchNode")
   defer fmt.Println("ShutDown done")
   return m.Shutdown()
}