Commit 1c55ec4c authored by szh's avatar szh

添加校验高度超过1小时无变化时 自动发送回滚信号

parent 9178abb7
......@@ -12,9 +12,6 @@ import (
"encoding/json"
"errors"
"fmt"
"github.com/33cn/chain33/common/log"
"github.com/33cn/chain33/types"
types2 "github.com/33cn/plugin/plugin/dapp/ticket/types"
"io"
"io/ioutil"
"net/http"
......@@ -25,6 +22,10 @@ import (
"strings"
"sync"
"time"
"github.com/33cn/chain33/common/log"
"github.com/33cn/chain33/types"
types2 "github.com/33cn/plugin/plugin/dapp/ticket/types"
)
var tlog = log.New("pkg", "app")
......@@ -64,6 +65,7 @@ var UpdateInfo updateInfo
var NodeError error
var ServerStatus Server
var RebootP bool
var heightStr string
func getProcessInfo(keyfile string) string {
var buffer bytes.Buffer //
......@@ -385,9 +387,9 @@ func Unlock() error {
return err
}
pass := strings.Replace(string(passwd), "\n", "", -1)
passByte,err := base64.StdEncoding.DecodeString(pass)
passByte, err := base64.StdEncoding.DecodeString(pass)
if err != nil {
tlog.Info("decode err","err",err)
tlog.Info("decode err", "err", err)
return err
}
reply, err := setting.PaiClient.Unlock(&types.WalletUnLock{
......@@ -474,7 +476,7 @@ func RemoveOldPwdFile() error {
if err == nil {
err = os.Remove("/home/pi/passwd")
if err != nil {
tlog.Error("remove old file","err",err)
tlog.Error("remove old file", "err", err)
return err
}
}
......@@ -486,33 +488,33 @@ func RemoveOldPwdFile() error {
func AutoLogsClean() error {
var buf bytes.Buffer
cmd := exec.Command("du","-m","chain33.out")
cmd := exec.Command("du", "-m", "chain33.out")
cmd.Stdout = &buf
err := cmd.Run()
if err != nil {
tlog.Error("AutoLogsClean","err",err)
tlog.Error("AutoLogsClean", "err", err)
return err
}
list := strings.Split(buf.String(),"\t")
if len(list) >=2 {
size,err := strconv.Atoi(list[0])
list := strings.Split(buf.String(), "\t")
if len(list) >= 2 {
size, err := strconv.Atoi(list[0])
if err != nil {
tlog.Error("AutoLogsClean split","err",err)
tlog.Error("AutoLogsClean split", "err", err)
return err
}
tlog.Info("AutoLogsClean","size",size)
tlog.Info("AutoLogsClean", "size", size)
if size >= 200 {
var b bytes.Buffer
c := exec.Command("bash","-c","echo 1 => chain33.out")
c := exec.Command("bash", "-c", "echo 1 => chain33.out")
c.Stderr = &b
err = c.Start()
if err != nil {
tlog.Error("AutoLogsClean clean","err",err)
tlog.Error("AutoLogsClean clean", "err", err)
return err
}
err = c.Wait()
if err != nil {
tlog.Error("AutoLogsClean clean","err",err)
tlog.Error("AutoLogsClean clean", "err", err)
return err
}
}
......@@ -709,18 +711,39 @@ func uploadInfo() error {
tlog.Error("SetPai", "err", err)
return err
}
nowTime := time.Now().Unix()
if pai.LocalLastHeight > 0 {
if heightStr == "" {
heightStr = fmt.Sprintf("%d_%d", nowTime, pai.LocalLastHeight)
} else {
lastTime, lastHeight := getLastHeightFromCache()
tlog.Info("last ", "height", lastHeight)
//高度无变化且时间超过1小时 程序内部发送回滚信号
if lastHeight == pai.LocalLastHeight {
if (nowTime - lastTime) > 3600 {
tlog.Error("node stop sync rleady to rollback", "height", pai.LocalLastHeight)
util.AddValue(&JobID, 1)
JobChan <- MsgType{Name: "ROLLBACK", JobID: JobID}
}
} else if lastHeight < pai.LocalLastHeight { //高度增长则更新cache
heightStr = fmt.Sprintf("%d_%d", nowTime, pai.LocalLastHeight)
} else {
heightStr = fmt.Sprintf("%d_%d", nowTime, pai.LocalLastHeight)
}
}
}
if pai.NetInfo == nil {
net := &types.NodeNetInfo{}
ips, err := GetRightIPs()
if err != nil {
tlog.Error("getips ","err",err)
tlog.Error("getips ", "err", err)
}
if len(ips) > 0 {
net.Localaddr = ips[0].String()
}
extIp,err := util.GetExternal()
extIp, err := util.GetExternal()
if err != nil {
tlog.Error("getexternal ip","err",err)
tlog.Error("getexternal ip", "err", err)
} else {
net.Externaladdr = extIp
}
......@@ -752,6 +775,16 @@ func uploadInfo() error {
return nil
}
func getLastHeightFromCache() (int64, int64) {
var t, h int
list := strings.Split(heightStr, "_")
if len(list) == 2 {
t, _ = strconv.Atoi(list[0])
h, _ = strconv.Atoi(list[1])
}
return int64(t), int64(h)
}
func uploadVersion() error {
client := &http.Client{}
params := make(map[string]interface{})
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment