cache: add SIGHUP support to evict all cache - fixes 1906
This commit is contained in:
parent
ebbe77f525
commit
8839e4ee33
2 changed files with 13 additions and 7 deletions
9
cache/cache.go
vendored
9
cache/cache.go
vendored
|
@ -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()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
|
5
cache/storage_persistent.go
vendored
5
cache/storage_persistent.go
vendored
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue