cache: add SIGHUP support to evict all cache - fixes 1906

This commit is contained in:
remusb 2017-12-19 15:48:48 +02:00
parent ebbe77f525
commit 8839e4ee33
2 changed files with 13 additions and 7 deletions

9
cache/cache.go vendored
View file

@ -334,12 +334,17 @@ func NewFs(name, rpath string) (fs.Fs, error) {
} }
// Trap SIGINT and SIGTERM to close the DB handle gracefully // Trap SIGINT and SIGTERM to close the DB handle gracefully
c := make(chan os.Signal, 1) c := make(chan os.Signal, 1)
signal.Notify(c, syscall.SIGINT, syscall.SIGTERM) signal.Notify(c, syscall.SIGINT, syscall.SIGTERM, syscall.SIGHUP)
go func() { go func() {
for {
s := <-c s := <-c
fs.Debugf(f, "Got signal: %v", s)
if s == syscall.SIGINT || s == syscall.SIGTERM { if s == syscall.SIGINT || s == syscall.SIGTERM {
fs.Debugf(f, "Got signal: %v", s)
f.cache.Close() f.cache.Close()
} else if s == syscall.SIGHUP {
fs.Infof(f, "Clearing cache from signal")
f.DirCacheFlush()
}
} }
}() }()

View file

@ -272,11 +272,12 @@ func (b *Persistent) RemoveDir(fp string) error {
// delete chunks on disk // delete chunks on disk
// safe to ignore as the files might not have been open // safe to ignore as the files might not have been open
if err != nil { if err == nil {
_ = os.RemoveAll(path.Join(b.dataPath, fp)) _ = os.RemoveAll(path.Join(b.dataPath, fp))
_ = os.MkdirAll(b.dataPath, os.ModePerm)
} }
return nil return err
} }
// ExpireDir will flush a CachedDirectory and all its objects from the objects // ExpireDir will flush a CachedDirectory and all its objects from the objects