From cd0b0254c7b866a81af567f387cf07fbb693eb35 Mon Sep 17 00:00:00 2001 From: ston1th Date: Fri, 19 Aug 2022 16:00:54 +0200 Subject: [PATCH] fixed preload finish deadlock --- pkg/fs/preload.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/fs/preload.go b/pkg/fs/preload.go index 6b709ef..945e44c 100644 --- a/pkg/fs/preload.go +++ b/pkg/fs/preload.go @@ -34,10 +34,10 @@ func (q *queue) Add(ph *PreloadHandler, name string, prio int) { q.Sort() } -func (q *queue) Remove(name string) { +func (q *queue) Remove(name string, collect bool) { for i, p := range *q { if p.Name == name { - p.stop(true) + p.stop(collect) *q = slices.Delete(*q, i, i+1) q.Sort() return @@ -100,7 +100,7 @@ func NewPreloadHandler(ctx context.Context, fs *FS, max int, log logr.Logger) (p func (ph *PreloadHandler) RemovePreload(name string) { ph.mu.RLock() defer ph.mu.RUnlock() - ph.q.Remove(name) + ph.q.Remove(name, true) ph.schedule() } @@ -184,7 +184,7 @@ func (ph *PreloadHandler) preloadStatus(ctx context.Context) { return case name := <-ph.fin: ph.mu.Lock() - ph.q.Remove(name) + ph.q.Remove(name, false) ph.schedule() ph.mu.Unlock() case name := <-ph.err: