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) {
