fixed quota delete
This commit is contained in:
parent
88861102fd
commit
3f1752e961
2 changed files with 10 additions and 8 deletions
|
|
@ -131,13 +131,13 @@ func NewMetadataHandler(ctx context.Context, fs *FS, file, dst string, log logr.
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mh *MetadataHandler) DeleteOldest() (s int64) {
|
func (mh *MetadataHandler) DeleteOldest() (free int64) {
|
||||||
mh.mu.Lock()
|
mh.mu.Lock()
|
||||||
defer mh.mu.Unlock()
|
defer mh.mu.Unlock()
|
||||||
atime := int64(math.MaxInt64)
|
atime := int64(math.MaxInt64)
|
||||||
var m *Metadata
|
var m *Metadata
|
||||||
for _, v := range mh.md {
|
for _, v := range mh.md {
|
||||||
if v.Atime != 0 && v.f != nil && v.Atime < atime {
|
if v.Atime != 0 && v.Atime < atime {
|
||||||
atime = v.Atime
|
atime = v.Atime
|
||||||
m = v
|
m = v
|
||||||
}
|
}
|
||||||
|
|
@ -145,16 +145,16 @@ func (mh *MetadataHandler) DeleteOldest() (s int64) {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
log := mh.log.WithValues("file", m.name)
|
log := mh.log.WithValues("file", m.name)
|
||||||
log.Info("deleting oldest file")
|
log.Info("deleting oldest file")
|
||||||
cs := m.Size
|
s := m.Size
|
||||||
if !m.FullyCached() {
|
if !m.FullyCached() {
|
||||||
cs = m.ChunkSize()
|
s = m.ChunkSize()
|
||||||
}
|
}
|
||||||
err := m.Delete()
|
err := m.Delete()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(err, "error deleting oldest file")
|
log.Error(err, "error deleting oldest file")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
s = cs
|
free = s
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -236,13 +236,15 @@ func (mh *MetadataHandler) init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mh *MetadataHandler) flusher(ctx context.Context) {
|
func (mh *MetadataHandler) flusher(ctx context.Context) {
|
||||||
|
t := time.NewTicker(time.Minute * 5)
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
|
t.Stop()
|
||||||
mh.close()
|
mh.close()
|
||||||
close(mh.done)
|
close(mh.done)
|
||||||
return
|
return
|
||||||
case <-time.After(time.Minute * 5):
|
case <-t.C:
|
||||||
}
|
}
|
||||||
mh.cleanupEmptyDirs()
|
mh.cleanupEmptyDirs()
|
||||||
mh.flush()
|
mh.flush()
|
||||||
|
|
|
||||||
|
|
@ -42,8 +42,8 @@ func (q *Quota) cleanup() {
|
||||||
}
|
}
|
||||||
q.log.Info("quota usage", "current", atomic.LoadInt64(&q.cur), "max", q.max)
|
q.log.Info("quota usage", "current", atomic.LoadInt64(&q.cur), "max", q.max)
|
||||||
defer q.mu.Unlock()
|
defer q.mu.Unlock()
|
||||||
size := q.fs.mh.DeleteOldest()
|
free := q.fs.mh.DeleteOldest()
|
||||||
atomic.AddInt64(&q.cur, -size)
|
atomic.AddInt64(&q.cur, -free)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (q *Quota) Add(n int) {
|
func (q *Quota) Add(n int) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue