You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by te...@apache.org on 2024/01/22 06:42:25 UTC
(pulsar) branch branch-3.2 updated: [fix][broker] Fix getMessageById throws 500 (#21919)
This is an automated email from the ASF dual-hosted git repository.
technoboy pushed a commit to branch branch-3.2
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/branch-3.2 by this push:
new bca08d98ab7 [fix][broker] Fix getMessageById throws 500 (#21919)
bca08d98ab7 is described below
commit bca08d98ab742d241d31b2e8d7673273605b2e16
Author: Zixuan Liu <no...@gmail.com>
AuthorDate: Fri Jan 19 11:18:02 2024 +0800
[fix][broker] Fix getMessageById throws 500 (#21919)
Signed-off-by: Zixuan Liu <no...@gmail.com>
---
.../broker/admin/impl/PersistentTopicsBase.java | 3 +++
.../pulsar/broker/admin/PersistentTopicsTest.java | 21 ++++++---------------
.../pulsar/client/admin/internal/TopicsImpl.java | 16 +---------------
3 files changed, 10 insertions(+), 30 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 0dbd4f8442b..379d6675b57 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
@@ -2826,6 +2826,9 @@ public class PersistentTopicsBase extends AdminResource {
@Override
public void readEntryFailed(ManagedLedgerException exception,
Object ctx) {
+ if (exception instanceof ManagedLedgerException.LedgerNotExistException) {
+ throw new RestException(Status.NOT_FOUND, "Message id not found");
+ }
throw new RestException(exception);
}
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 6a81ffe3aba..23cb413614f 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
@@ -1368,21 +1368,12 @@ public class PersistentTopicsTest extends MockedPulsarServiceBaseTest {
Message<byte[]> message2 = admin.topics().getMessageById(topicName2, id2.getLedgerId(), id2.getEntryId());
Assert.assertEquals(message2.getData(), data2.getBytes());
- Message<byte[]> message3 = null;
- try {
- message3 = admin.topics().getMessageById(topicName2, id1.getLedgerId(), id1.getEntryId());
- Assert.fail();
- } catch (Exception e) {
- Assert.assertNull(message3);
- }
-
- Message<byte[]> message4 = null;
- try {
- message4 = admin.topics().getMessageById(topicName1, id2.getLedgerId(), id2.getEntryId());
- Assert.fail();
- } catch (Exception e) {
- Assert.assertNull(message4);
- }
+ Assert.expectThrows(PulsarAdminException.NotFoundException.class, () -> {
+ admin.topics().getMessageById(topicName2, id1.getLedgerId(), id1.getEntryId());
+ });
+ Assert.expectThrows(PulsarAdminException.NotFoundException.class, () -> {
+ admin.topics().getMessageById(topicName1, id2.getLedgerId(), id2.getEntryId());
+ });
}
@Test
diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java
index 9d09d96073d..39bbb134271 100644
--- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java
+++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java
@@ -987,21 +987,7 @@ public class TopicsImpl extends BaseResource implements Topics {
@Override
public CompletableFuture<Message<byte[]>> getMessageByIdAsync(String topic, long ledgerId, long entryId) {
- CompletableFuture<Message<byte[]>> future = new CompletableFuture<>();
- getRemoteMessageById(topic, ledgerId, entryId).handle((r, ex) -> {
- if (ex != null) {
- if (ex instanceof NotFoundException) {
- log.warn("Exception '{}' occurred while trying to get message.", ex.getMessage());
- future.complete(r);
- } else {
- future.completeExceptionally(ex);
- }
- return null;
- }
- future.complete(r);
- return null;
- });
- return future;
+ return getRemoteMessageById(topic, ledgerId, entryId);
}
private CompletableFuture<Message<byte[]>> getRemoteMessageById(String topic, long ledgerId, long entryId) {