forked from mirror/ledisdb
control commit id flush
This commit is contained in:
parent
a0abd79328
commit
9b4c23353e
31
rpl/rpl.go
31
rpl/rpl.go
|
@ -24,8 +24,9 @@ type Replication struct {
|
|||
|
||||
s LogStore
|
||||
|
||||
commitID uint64
|
||||
commitLog *os.File
|
||||
commitID uint64
|
||||
commitLog *os.File
|
||||
commitLastTime time.Time
|
||||
|
||||
quit chan struct{}
|
||||
|
||||
|
@ -92,6 +93,10 @@ func (r *Replication) Close() error {
|
|||
r.s = nil
|
||||
}
|
||||
|
||||
if err := r.updateCommitID(r.commitID, true); err != nil {
|
||||
log.Error("update commit id err %s", err.Error())
|
||||
}
|
||||
|
||||
if r.commitLog != nil {
|
||||
r.commitLog.Close()
|
||||
r.commitLog = nil
|
||||
|
@ -185,7 +190,7 @@ func (r *Replication) UpdateCommitID(id uint64) error {
|
|||
r.m.Lock()
|
||||
defer r.m.Unlock()
|
||||
|
||||
return r.updateCommitID(id)
|
||||
return r.updateCommitID(id, r.cfg.Replication.SyncLog == 2)
|
||||
}
|
||||
|
||||
func (r *Replication) Stat() (*Stat, error) {
|
||||
|
@ -207,17 +212,23 @@ func (r *Replication) Stat() (*Stat, error) {
|
|||
return s, nil
|
||||
}
|
||||
|
||||
func (r *Replication) updateCommitID(id uint64) error {
|
||||
if _, err := r.commitLog.Seek(0, os.SEEK_SET); err != nil {
|
||||
return err
|
||||
}
|
||||
func (r *Replication) updateCommitID(id uint64, force bool) error {
|
||||
n := time.Now()
|
||||
|
||||
if err := binary.Write(r.commitLog, binary.BigEndian, id); err != nil {
|
||||
return err
|
||||
if force || n.Sub(r.commitLastTime) > time.Second {
|
||||
if _, err := r.commitLog.Seek(0, os.SEEK_SET); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := binary.Write(r.commitLog, binary.BigEndian, id); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
r.commitID = id
|
||||
|
||||
r.commitLastTime = n
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -266,7 +277,7 @@ func (r *Replication) ClearWithCommitID(id uint64) error {
|
|||
return err
|
||||
}
|
||||
|
||||
return r.updateCommitID(id)
|
||||
return r.updateCommitID(id, true)
|
||||
}
|
||||
|
||||
func (r *Replication) onPurgeExpired() {
|
||||
|
|
Loading…
Reference in New Issue