This is an automated email from the ASF dual-hosted git repository.

yubiao pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/branch-3.0 by this push:
     new d09664af2d8 [Fix][Txn] Unwrap the completion exception. (#20396)
d09664af2d8 is described below

commit d09664af2d8dbdd681db8a7ad1b76ffde5675314
Author: thetumbled <[email protected]>
AuthorDate: Tue May 30 10:07:09 2023 +0800

    [Fix][Txn] Unwrap the completion exception. (#20396)
    
    (cherry picked from commit 7ea8741af265bd8554e7a52a29a4ed59cb749dea)
---
 .../org/apache/pulsar/broker/TransactionMetadataStoreService.java    | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/TransactionMetadataStoreService.java
 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/TransactionMetadataStoreService.java
index 3e3b044ec51..35aa7cc2fdd 100644
--- 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/TransactionMetadataStoreService.java
+++ 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/TransactionMetadataStoreService.java
@@ -169,7 +169,8 @@ public class TransactionMetadataStoreService {
                                     tcLoadSemaphore.release();
                                 })).exceptionally(e -> {
                             internalPinnedExecutor.execute(() -> {
-                                
completableFuture.completeExceptionally(e.getCause());
+                                Throwable realCause = 
FutureUtil.unwrapCompletionException(e);
+                                
completableFuture.completeExceptionally(realCause);
                                 // release before handle request queue,
                                 //in order to client reconnect infinite loop
                                 tcLoadSemaphore.release();
@@ -180,7 +181,7 @@ public class TransactionMetadataStoreService {
                                         CompletableFuture<Void> future = 
deque.poll();
                                         if (future != null) {
                                             // this means that this tc client 
connection connect fail
-                                            future.completeExceptionally(e);
+                                            
future.completeExceptionally(realCause);
                                         } else {
                                             break;
                                         }

Reply via email to