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;
                     });
         }