diff options
| author | chrislu <chris.lu@gmail.com> | 2024-05-05 12:20:08 -0700 |
|---|---|---|
| committer | chrislu <chris.lu@gmail.com> | 2024-05-05 12:20:08 -0700 |
| commit | a5645d50a70a5663d0671ec5677af3ce392c3ddb (patch) | |
| tree | 8a9867b4bc8e7bf2a5d806afcfd857b5f6412f6e | |
| parent | 253ec73a17822a37a7b1dde8a7bfd7a3217606ad (diff) | |
| download | seaweedfs-a5645d50a70a5663d0671ec5677af3ce392c3ddb.tar.xz seaweedfs-a5645d50a70a5663d0671ec5677af3ce392c3ddb.zip | |
ensure head index is within range
| -rw-r--r-- | weed/util/buffered_queue/buffered_queue.go | 10 |
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 } |
