From 6054c057c85ecfda3a0a35f8fc6f68444585dd94 Mon Sep 17 00:00:00 2001 From: zhangjidi2016 <1017543663@qq.com> Date: Wed, 17 Nov 2021 13:30:33 +0800 Subject: [PATCH] [ISSUE #43]Give a tip when no message found with topic + time query. (#44) Co-authored-by: zhangjidi2016 --- .../dashboard/service/impl/MessageServiceImpl.java | 4 ++++ .../service/impl/MessageTraceServiceImpl.java | 5 ++--- src/main/resources/static/src/message.js | 4 ++++ src/main/resources/static/view/pages/message.html | 3 +++ .../controller/MessageTraceControllerTest.java | 11 +++++++++++ 5 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/apache/rocketmq/dashboard/service/impl/MessageServiceImpl.java b/src/main/java/org/apache/rocketmq/dashboard/service/impl/MessageServiceImpl.java index 020548e..6c71bc2 100644 --- a/src/main/java/org/apache/rocketmq/dashboard/service/impl/MessageServiceImpl.java +++ b/src/main/java/org/apache/rocketmq/dashboard/service/impl/MessageServiceImpl.java @@ -31,6 +31,7 @@ import org.apache.rocketmq.acl.common.SessionCredentials; import org.apache.rocketmq.client.consumer.DefaultMQPullConsumer; import org.apache.rocketmq.client.consumer.PullResult; import org.apache.rocketmq.client.consumer.PullStatus; +import org.apache.rocketmq.client.exception.MQClientException; import org.apache.rocketmq.common.MixAll; import org.apache.rocketmq.common.Pair; import org.apache.rocketmq.common.message.MessageClientIDSetter; @@ -111,6 +112,9 @@ public class MessageServiceImpl implements MessageService { } }); } catch (Exception err) { + if (err instanceof MQClientException) { + throw new ServiceException(-1, ((MQClientException) err).getErrorMessage()); + } throw Throwables.propagate(err); } } diff --git a/src/main/java/org/apache/rocketmq/dashboard/service/impl/MessageTraceServiceImpl.java b/src/main/java/org/apache/rocketmq/dashboard/service/impl/MessageTraceServiceImpl.java index b3f3dc4..89468cd 100644 --- a/src/main/java/org/apache/rocketmq/dashboard/service/impl/MessageTraceServiceImpl.java +++ b/src/main/java/org/apache/rocketmq/dashboard/service/impl/MessageTraceServiceImpl.java @@ -20,8 +20,6 @@ package org.apache.rocketmq.dashboard.service.impl; import com.google.common.base.Function; import com.google.common.collect.Lists; -import com.google.common.base.Throwables; - import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -35,6 +33,7 @@ import org.apache.rocketmq.common.Pair; import org.apache.rocketmq.common.message.MessageExt; import org.apache.rocketmq.common.topic.TopicValidator; import org.apache.rocketmq.dashboard.config.RMQConfigure; +import org.apache.rocketmq.dashboard.exception.ServiceException; import org.apache.rocketmq.dashboard.model.MessageTraceView; import org.apache.rocketmq.dashboard.model.trace.ProducerNode; import org.apache.rocketmq.dashboard.model.trace.MessageTraceGraph; @@ -82,7 +81,7 @@ public class MessageTraceServiceImpl implements MessageTraceService { } return messageTraceViews; } catch (Exception err) { - throw Throwables.propagate(err); + throw new ServiceException(-1, String.format("Failed to query message trace by msgId %s", key)); } } diff --git a/src/main/resources/static/src/message.js b/src/main/resources/static/src/message.js index af36808..6b54f1c 100644 --- a/src/main/resources/static/src/message.js +++ b/src/main/resources/static/src/message.js @@ -58,6 +58,7 @@ module.controller('messageController', ['$scope', 'ngDialog', '$http', 'Notifica }; $scope.queryMessagePageByTopic = function () { + $("#noMsgTip").css("display", "none"); if ($scope.timepickerEnd < $scope.timepickerBegin) { Notification.error({message: "endTime is later than beginTime!", delay: 2000}); return @@ -80,6 +81,9 @@ module.controller('messageController', ['$scope', 'ngDialog', '$http', 'Notifica if (resp.status === 0) { console.log(resp); $scope.messageShowList = resp.data.page.content; + if ($scope.messageShowList.length == 0){ + $("#noMsgTip").removeAttr("style"); + } if (resp.data.page.first) { $scope.paginationConf.currentPage = 1; } diff --git a/src/main/resources/static/view/pages/message.html b/src/main/resources/static/view/pages/message.html index a2bc2b6..a4bb81c 100644 --- a/src/main/resources/static/view/pages/message.html +++ b/src/main/resources/static/view/pages/message.html @@ -73,6 +73,9 @@ StoreTime Operation + + {{'NO_MATCH_RESULT' | translate}} + {{item.msgId}} {{item.properties.TAGS}} diff --git a/src/test/java/org/apache/rocketmq/dashboard/controller/MessageTraceControllerTest.java b/src/test/java/org/apache/rocketmq/dashboard/controller/MessageTraceControllerTest.java index 49a40f7..e950be7 100644 --- a/src/test/java/org/apache/rocketmq/dashboard/controller/MessageTraceControllerTest.java +++ b/src/test/java/org/apache/rocketmq/dashboard/controller/MessageTraceControllerTest.java @@ -62,6 +62,7 @@ public class MessageTraceControllerTest extends BaseControllerTest { messageList.add(messageExt); QueryResult queryResult = new QueryResult(System.currentTimeMillis(), messageList); when(mqAdminExt.queryMessage(anyString(), anyString(), anyInt(), anyLong(), anyLong())) + .thenThrow(new RuntimeException()) .thenReturn(queryResult); } @@ -100,6 +101,11 @@ public class MessageTraceControllerTest extends BaseControllerTest { final String url = "/messageTrace/viewMessageTraceDetail.query"; requestBuilder = MockMvcRequestBuilders.get(url); requestBuilder.param("msgId", "0A9A003F00002A9F0000000000000319"); + // query message trace exception + perform = mockMvc.perform(requestBuilder); + performErrorExpect(perform); + + // query message trace success perform = mockMvc.perform(requestBuilder); perform.andExpect(status().isOk()) .andExpect(jsonPath("$.data", hasSize(4))) @@ -114,6 +120,11 @@ public class MessageTraceControllerTest extends BaseControllerTest { final String url = "/messageTrace/viewMessageTraceGraph.query"; requestBuilder = MockMvcRequestBuilders.get(url); requestBuilder.param("msgId", "0A9A003F00002A9F0000000000000319"); + // query message trace exception + perform = mockMvc.perform(requestBuilder); + performErrorExpect(perform); + + // query message trace success perform = mockMvc.perform(requestBuilder); perform.andExpect(status().isOk()) .andExpect(jsonPath("$.data").isMap())