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

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

commit 80c4ca2f5ff44f11e5af12c0dada3ecc3a86f175
Author: fengyubiao <[email protected]>
AuthorDate: Mon Jun 9 21:33:46 2025 +0800

    [fix][ml]Revert a behavior change of releasing idle offloaded ledger 
handle: only release idle BlobStoreBackedReadHandle (#24384)
    
    (cherry picked from commit e0d7faa087f7ae6895f139b89ef333c8211f71d3)
---
 .../java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java     | 3 ++-
 .../mledger/offload/jcloud/impl/BlobStoreBackedReadHandleImpl.java     | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git 
a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java
 
b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java
index 2b6a596b479..f80170aa491 100644
--- 
a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java
+++ 
b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java
@@ -2660,7 +2660,8 @@ public class ManagedLedgerImpl implements ManagedLedger, 
CreateCallback {
                     ReadHandle readHandle = ledger.join();
                     if (readHandle instanceof OffloadedLedgerHandle 
offloadedLedgerHandle) {
                         int pendingRead = 
offloadedLedgerHandle.getPendingRead();
-                        if (pendingRead == 0) {
+                        long lastAccessTimestamp = 
offloadedLedgerHandle.lastAccessTimestamp();
+                        if (lastAccessTimestamp >= 0 && pendingRead == 0) {
                             long delta = now - 
offloadedLedgerHandle.lastAccessTimestamp();
                             if (delta >= 
inactiveOffloadedLedgerEvictionTimeMs) {
                                 log.info("[{}] Offloaded ledger {} can be 
released ({} ms elapsed since last access)",
diff --git 
a/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/impl/BlobStoreBackedReadHandleImpl.java
 
b/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/impl/BlobStoreBackedReadHandleImpl.java
index 84d9d118728..916e33c3642 100644
--- 
a/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/impl/BlobStoreBackedReadHandleImpl.java
+++ 
b/tiered-storage/jcloud/src/main/java/org/apache/bookkeeper/mledger/offload/jcloud/impl/BlobStoreBackedReadHandleImpl.java
@@ -135,8 +135,8 @@ public class BlobStoreBackedReadHandleImpl implements 
ReadHandle, OffloadedLedge
         // is better.
         PENDING_READ_UPDATER.incrementAndGet(this);
         promise.whenComplete((__, ex) -> {
-            
PENDING_READ_UPDATER.decrementAndGet(BlobStoreBackedReadHandleImpl.this);
             lastAccessTimestamp = System.currentTimeMillis();
+            
PENDING_READ_UPDATER.decrementAndGet(BlobStoreBackedReadHandleImpl.this);
         });
         executor.execute(() -> {
             if (state == State.Closed) {

Reply via email to