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 2021/11/18 17:42:08 UTC
[pulsar] 01/01: Revert "The problem of two exception handling (#12744)"
This is an automated email from the ASF dual-hosted git repository.
lhotari pushed a commit to branch revert-12744-handle_exception_double
in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit 11d9f365a8165cd74dd6123faf0e4d14579e25f1
Author: Lari Hotari <lh...@users.noreply.github.com>
AuthorDate: Thu Nov 18 19:40:19 2021 +0200
Revert "The problem of two exception handling (#12744)"
This reverts commit fc8d50ecf841bd1a4b01fa09720411f6190ee5be.
---
.../bookkeeper/mledger/impl/EntryCacheImpl.java | 19 +++++++++++++++++--
.../bookkeeper/mledger/impl/EntryCacheManager.java | 3 +++
2 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/EntryCacheImpl.java b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/EntryCacheImpl.java
index 49190ad..7660031 100644
--- a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/EntryCacheImpl.java
+++ b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/EntryCacheImpl.java
@@ -234,7 +234,12 @@ public class EntryCacheImpl implements EntryCache {
} finally {
ledgerEntries.close();
}
- }, ml.getExecutor().chooseThread(ml.getName()));
+ }, ml.getExecutor().chooseThread(ml.getName())).exceptionally(exception->{
+ ml.invalidateLedgerHandle(lh);
+ callback.readEntryFailed(createManagedLedgerException(exception), ctx);
+ return null;
+ }
+ );
}
}
@@ -328,7 +333,17 @@ public class EntryCacheImpl implements EntryCache {
} finally {
ledgerEntries.close();
}
- }, ml.getExecutor().chooseThread(ml.getName()));
+ }, ml.getExecutor().chooseThread(ml.getName())).exceptionally(exception->{
+ if (exception instanceof BKException
+ && ((BKException)exception).getCode() == BKException.Code.TooManyRequestsException) {
+ callback.readEntriesFailed(createManagedLedgerException(exception), ctx);
+ } else {
+ ml.invalidateLedgerHandle(lh);
+ ManagedLedgerException mlException = createManagedLedgerException(exception);
+ callback.readEntriesFailed(mlException, ctx);
+ }
+ return null;
+ });
}
}
diff --git a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/EntryCacheManager.java b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/EntryCacheManager.java
index d360bbd..c87bcb8 100644
--- a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/EntryCacheManager.java
+++ b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/EntryCacheManager.java
@@ -215,6 +215,9 @@ public class EntryCacheManager {
ml.mbean.addReadEntriesSample(entries.size(), totalSize);
callback.readEntriesComplete(entries, ctx);
+ }).exceptionally(exception -> {
+ callback.readEntriesFailed(createManagedLedgerException(exception), ctx);
+ return null;
});
}