aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2024-05-05 12:20:08 -0700
committerchrislu <chris.lu@gmail.com>2024-05-05 12:20:08 -0700
commita5645d50a70a5663d0671ec5677af3ce392c3ddb (patch)
tree8a9867b4bc8e7bf2a5d806afcfd857b5f6412f6e
parent253ec73a17822a37a7b1dde8a7bfd7a3217606ad (diff)
downloadseaweedfs-a5645d50a70a5663d0671ec5677af3ce392c3ddb.tar.xz
seaweedfs-a5645d50a70a5663d0671ec5677af3ce392c3ddb.zip
ensure head index is within range
-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
}