You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by lh...@apache.org on 2025/06/09 13:48:04 UTC
(pulsar) 06/06: [fix][ml]Revert a behavior change of releasing idle offloaded ledger handle: only release idle BlobStoreBackedReadHandle (#24384)
This is an automated email from the ASF dual-hosted git repository.
lhotari pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit 1294a56b95b46d9d1e5d583c55d418d6d433a32f
Author: fengyubiao <yu...@streamnative.io>
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 e911932be9c..e6d38b699a4 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) {