From 8d1eff7e41cbadf20d3e91a354992297c35c2ed9 Mon Sep 17 00:00:00 2001 From: Simon Frei Date: Wed, 27 Mar 2019 20:19:35 +0100 Subject: [PATCH] lib/model: Missing queue.Done and reset between pulls (fixes #5332) (#5626) --- lib/model/folder_sendrecv.go | 4 ++++ lib/model/queue.go | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/lib/model/folder_sendrecv.go b/lib/model/folder_sendrecv.go index 938ffc68..c374723c 100644 --- a/lib/model/folder_sendrecv.go +++ b/lib/model/folder_sendrecv.go @@ -291,6 +291,8 @@ func (f *sendReceiveFolder) pullerIteration(scanChan chan<- string) int { } func (f *sendReceiveFolder) processNeeded(dbUpdateChan chan<- dbUpdateJob, copyChan chan<- copyBlocksState, scanChan chan<- string) (int, map[string]protocol.FileInfo, []protocol.FileInfo, error) { + defer f.queue.Reset() + changed := 0 var dirDeletions []protocol.FileInfo fileDeletions := map[string]protocol.FileInfo{} @@ -464,6 +466,7 @@ nextFile: // Remove the pending deletion (as we performed it by renaming) delete(fileDeletions, candidate.Name) + changed++ f.queue.Done(fileName) continue nextFile } @@ -479,6 +482,7 @@ nextFile: } } f.newPullError(fileName, errNotAvailable) + f.queue.Done(fileName) } return changed, fileDeletions, dirDeletions, nil diff --git a/lib/model/queue.go b/lib/model/queue.go index af331b7d..e5287982 100644 --- a/lib/model/queue.go +++ b/lib/model/queue.go @@ -110,6 +110,13 @@ func (q *jobQueue) Shuffle() { } } +func (q *jobQueue) Reset() { + q.mut.Lock() + defer q.mut.Unlock() + q.progress = nil + q.queued = nil +} + func (q *jobQueue) lenQueued() int { q.mut.Lock() defer q.mut.Unlock()