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 <lhot...@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; }); }