aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--weed/util/buffered_queue/buffered_queue.go10
1 files changed, 8 insertions, 2 deletions
diff --git a/weed/util/buffered_queue/buffered_queue.go b/weed/util/buffered_queue/buffered_queue.go
index 042561cdd..9c65899e9 100644
--- a/weed/util/buffered_queue/buffered_queue.go
+++ b/weed/util/buffered_queue/buffered_queue.go
@@ -95,10 +95,16 @@ func (q *BufferedQueue[T]) Dequeue() (T, bool) {
return a, false
}
+ q.maybeAdjustHeadIndex()
+
job := q.head.items[q.head.headIndex]
q.head.headIndex++
q.count--
+ return job, true
+}
+
+func (q *BufferedQueue[T]) maybeAdjustHeadIndex() {
if q.head.headIndex == q.chunkSize {
q.last.next = q.head
q.head = q.head.next
@@ -113,8 +119,6 @@ func (q *BufferedQueue[T]) Dequeue() (T, bool) {
// fmt.Printf("Node: %+v\n", p)
//}
}
-
- return job, true
}
func (q *BufferedQueue[T]) PeekHead() (T, bool) {
@@ -126,6 +130,8 @@ func (q *BufferedQueue[T]) PeekHead() (T, bool) {
return a, false
}
+ q.maybeAdjustHeadIndex()
+
job := q.head.items[q.head.headIndex]
return job, true
}