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

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

commit 15550426daef1eaa72b3114c686a96523372b1e3
Author: danpi <[email protected]>
AuthorDate: Sat Dec 21 19:20:56 2024 +0800

    [fix][admin] Fix exception loss in getMessageId method (#23766)
    
    Co-authored-by: houbonan <[email protected]>
    (cherry picked from commit 3d505742e05e403144d17aef59c95e2758982a26)
---
 .../org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java  | 7 ++++---
 .../java/org/apache/pulsar/broker/admin/PersistentTopicsTest.java  | 4 ++++
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java
 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java
index 58a86f1a40f..5fa4b582e3b 100644
--- 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java
+++ 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java
@@ -2762,9 +2762,10 @@ public class PersistentTopicsBase extends AdminResource {
                         public void readEntryFailed(ManagedLedgerException 
exception,
                                                     Object ctx) {
                             if (exception instanceof 
ManagedLedgerException.LedgerNotExistException) {
-                                throw new RestException(Status.NOT_FOUND, 
"Message id not found");
+                                results.completeExceptionally(
+                                        new RestException(Status.NOT_FOUND, 
"Message id not found"));
                             }
-                            throw new RestException(exception);
+                            results.completeExceptionally(new 
RestException(exception));
                         }
 
                         @Override
@@ -2772,7 +2773,7 @@ public class PersistentTopicsBase extends AdminResource {
                             try {
                                 
results.complete(generateResponseWithEntry(entry, (PersistentTopic) topic));
                             } catch (IOException exception) {
-                                throw new RestException(exception);
+                                results.completeExceptionally(new 
RestException(exception));
                             } finally {
                                 if (entry != null) {
                                     entry.release();
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/PersistentTopicsTest.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/PersistentTopicsTest.java
index bf3b2706697..d5c2bbfbdf2 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/PersistentTopicsTest.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/PersistentTopicsTest.java
@@ -1389,6 +1389,10 @@ public class PersistentTopicsTest extends 
MockedPulsarServiceBaseTest {
         Assert.expectThrows(PulsarAdminException.NotFoundException.class, () 
-> {
             admin.topics().getMessageById(topicName1, id2.getLedgerId(), 
id2.getEntryId());
         });
+
+        
Assert.expectThrows(PulsarAdminException.ServerSideErrorException.class, () -> {
+            admin.topics().getMessageById(topicName1, id1.getLedgerId(), 
id1.getEntryId() + 10);
+        });
     }
 
     @Test

Reply via email to