Merge pull request #237 from rshura/shrink_fix

Flush to file periodically
This commit is contained in:
Josh Baker 2017-12-13 16:46:52 -07:00 committed by GitHub
commit 02fa605dc4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -169,12 +169,12 @@ func (c *Controller) aofshrink() {
)
}()
}
if len(aofbuf) > maxchunk {
if _, err := f.Write(aofbuf); err != nil {
return err
if len(aofbuf) > maxchunk {
if _, err := f.Write(aofbuf); err != nil {
return err
}
aofbuf = aofbuf[:0]
}
aofbuf = aofbuf[:0]
}
}
@ -264,22 +264,22 @@ func (c *Controller) aofshrink() {
// anything below this point is unrecoverable. just log and exit process
// back up the live aof, just in case of fatal error
if err := c.aof.Close(); err != nil {
log.Fatalf("shink live aof close fatal operation: %v", err)
log.Fatalf("shrink live aof close fatal operation: %v", err)
}
if err := os.Rename(path.Join(c.dir, "appendonly.aof"), path.Join(c.dir, "appendonly.bak")); err != nil {
log.Fatalf("shink backup fatal operation: %v", err)
log.Fatalf("shrink backup fatal operation: %v", err)
}
if err := os.Rename(path.Join(c.dir, "shrink"), path.Join(c.dir, "appendonly.aof")); err != nil {
log.Fatalf("shink rename fatal operation: %v", err)
log.Fatalf("shrink rename fatal operation: %v", err)
}
c.aof, err = os.OpenFile(path.Join(c.dir, "appendonly.aof"), os.O_CREATE|os.O_RDWR, 0600)
if err != nil {
log.Fatalf("shink openfile fatal operation: %v", err)
log.Fatalf("shrink openfile fatal operation: %v", err)
}
var n int64
n, err = c.aof.Seek(0, 2)
if err != nil {
log.Fatalf("shink seek end fatal operation: %v", err)
log.Fatalf("shrink seek end fatal operation: %v", err)
}
c.aofsz = int(n)