From 377d4615c7073e5325851117783ee46f0f824dac Mon Sep 17 00:00:00 2001 From: minghong Date: Tue, 30 Jul 2024 13:36:43 +0800 Subject: [PATCH] [feat](FE) add rest api to get last profile (#38268) (#38451) ## Proposed changes pick from #38268 if you want to get the profile of the query just executed, it not neccessary to find the query_id now. this is useful to get profiles in shell script, for example, we want to get all profiles of tpcds queries (103 query profile) in a shell script. before: curl http://root:@127.0.0.1:8030/api/profile/text?query_id=990cc3b19e464e03-a3af05a997eb4091 > profile after: curl http://root:@127.0.0.1:8030/api/profile/text > profilex Issue Number: close #xxx ## Proposed changes Issue Number: close #xxx --- .../java/org/apache/doris/common/util/ProfileManager.java | 4 ++++ .../main/java/org/apache/doris/httpv2/rest/ProfileAction.java | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/util/ProfileManager.java b/fe/fe-core/src/main/java/org/apache/doris/common/util/ProfileManager.java index 50543de05b..1984278b40 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/common/util/ProfileManager.java +++ b/fe/fe-core/src/main/java/org/apache/doris/common/util/ProfileManager.java @@ -290,6 +290,10 @@ public class ProfileManager { } } + public String getLastQueryId() { + return queryIdDeque.getLast(); + } + public String getProfileBrief(String queryID) { readLock.lock(); try { diff --git a/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/ProfileAction.java b/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/ProfileAction.java index 4dcac417d5..5c1bc8213a 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/ProfileAction.java +++ b/fe/fe-core/src/main/java/org/apache/doris/httpv2/rest/ProfileAction.java @@ -69,7 +69,7 @@ public class ProfileAction extends RestBaseController { String queryId = request.getParameter("query_id"); if (Strings.isNullOrEmpty(queryId)) { - return "Missing query_id"; + queryId = ProfileManager.getInstance().getLastQueryId(); } String queryProfileStr = ProfileManager.getInstance().getProfile(queryId);