You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by bo...@apache.org on 2022/12/07 07:09:10 UTC

[pulsar] 01/02: [fix][broker]Cache invalidation due to concurrent access (#18076)

This is an automated email from the ASF dual-hosted git repository.

bogong pushed a commit to branch branch-2.9
in repository https://gitbox.apache.org/repos/asf/pulsar.git

commit 42d0060ccbedeca1bd383be18af94cd91df523e6
Author: fengyubiao <yu...@streamnative.io>
AuthorDate: Wed Oct 19 16:51:27 2022 +0800

    [fix][broker]Cache invalidation due to concurrent access (#18076)
    
    (cherry picked from commit 7e5cad778907f3a0095343492cbf07ca202976b4)
---
 .../main/java/org/apache/bookkeeper/mledger/util/RangeCache.java   | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/util/RangeCache.java b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/util/RangeCache.java
index 4a77ac91dca..6d6e71b18fa 100644
--- a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/util/RangeCache.java
+++ b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/util/RangeCache.java
@@ -192,13 +192,12 @@ public class RangeCache<Key extends Comparable<Key>, Value extends ReferenceCoun
            if (entry == null || timestampExtractor.getTimestamp(entry.getValue()) > maxTimestamp) {
                break;
            }
-
-           entry = entries.pollFirstEntry();
-           if (entry == null) {
+           Value value = entry.getValue();
+           boolean removeHits = entries.remove(entry.getKey(), value);
+           if (!removeHits) {
                break;
            }
 
-           Value value = entry.getValue();
            removedSize += weighter.getSize(value);
            value.release();
        }