基于serf的数据库同步模块库
chenshijun
2019-09-28 790130e3b01a9daa0ba10fe1510410bf4139347a
修改重连后收到历史数据,导致数据重复bug的处理
2个文件已修改
39 ■■■■ 已修改文件
config.go 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dbself.go 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
config.go
@@ -45,6 +45,8 @@
    MaxQueryRespSize   = 50 * 1024 * 1024
    MaxQuerySize       = 50 * 1024 * 1024
    MaxUserEventSize   = 5 * 1024
    ReplayOnJoinDefault = false
    SnapshotPathDefault = "/opt/vasystem/serfSnapShot"
)
// DefaultConfig default config
@@ -118,10 +120,13 @@
    if c.Mode == ModeCluster && c.RetryMaxAttempts <= 0 {
        c.RetryMaxAttempts = retryMaxAttempts
    }
    c.SnapshotPath = SnapshotPathDefault
    c.ReplayOnJoin = ReplayOnJoinDefault
    serfConf.QueryResponseSizeLimit = c.QueryResponseSizeLimit
    serfConf.QuerySizeLimit = c.QuerySizeLimit
    serfConf.UserEventSizeLimit = c.UserEventSizeLimit
    serfConf.SnapshotPath = c.SnapshotPath
    return serfConf, nil
}
dbself.go
@@ -6,7 +6,6 @@
    "os"
    "os/exec"
    "path/filepath"
    "strconv"
    "strings"
    "sync"
    "github.com/jinzhu/gorm"
@@ -131,39 +130,6 @@
        return true,nil
    }
    return false,errors.New("localDb is nil")
}
type SyncSerf struct {
    LamportTime string `json:"lamport_time"`
}
func QueryLTimeFromDbByGorm() uint64 {
    if localDb != nil {
        var syncSerf []SyncSerf
        err := localDb.Raw("select * from sync_serf").Scan(&syncSerf).Error
        if err == nil {
            if len(syncSerf) > 0{
                ltStr := syncSerf[0].LamportTime
                logger.Info("db.LamportTime str:", ltStr)
                t, e := strconv.ParseUint(ltStr, 10, 64)
                if e != nil {
                    logger.Error("db.LamportTime parseUint err:", e)
                } else {
                    curLTime = t
                }
                logger.Info("db.LamportTime:", ltStr)
            }else {
                err = localDb.Exec("insert into sync_serf values('0')").Error
                if err !=nil {
                    logger.Error("sync_serf lamport_time init err:",err)
                }
            }
        } else {
            logger.Error("get db.LamportTime err:", err)
        }
    }
    return 0
}
type TableDesc struct {