You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ab...@apache.org on 2023/04/05 18:34:55 UTC
[hive] branch master updated: HIVE-27184: Add class name profiling option in ProfileServlet. (#4196) (Dmitriy Fingerman reviewed by Rajesh Balamohan)
This is an automated email from the ASF dual-hosted git repository.
abstractdog pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new 01a29215242 HIVE-27184: Add class name profiling option in ProfileServlet. (#4196) (Dmitriy Fingerman reviewed by Rajesh Balamohan)
01a29215242 is described below
commit 01a29215242e63a5fcbc1de4c4518772ba248cb8
Author: Dmitriy Fingerman <dm...@gmail.com>
AuthorDate: Wed Apr 5 14:34:43 2023 -0400
HIVE-27184: Add class name profiling option in ProfileServlet. (#4196) (Dmitriy Fingerman reviewed by Rajesh Balamohan)
---
common/src/java/org/apache/hive/http/ProfileServlet.java | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/common/src/java/org/apache/hive/http/ProfileServlet.java b/common/src/java/org/apache/hive/http/ProfileServlet.java
index 6da23e66a34..c2ff2712938 100644
--- a/common/src/java/org/apache/hive/http/ProfileServlet.java
+++ b/common/src/java/org/apache/hive/http/ProfileServlet.java
@@ -42,6 +42,7 @@ import com.google.common.base.Joiner;
* // -i interval sampling interval in nanoseconds (long)
* // -j jstackdepth maximum Java stack depth (integer)
* // -b bufsize frame buffer size (long)
+ * // -m method fully qualified method name: 'ClassName.methodName'
* // -t profile different threads separately
* // -s simple class names instead of FQN
* // -o fmt[,fmt...] output format: summary|traces|flat|collapsed|svg|tree|jfr
@@ -194,6 +195,14 @@ public class ProfileServlet extends HttpServlet {
final Integer height = getInteger(req, "height", null);
final Double minwidth = getMinWidth(req);
final boolean reverse = req.getParameterMap().containsKey("reverse");
+ final String method = req.getParameter("method");
+
+ if (req.getParameter("event") != null && method != null) {
+ resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+ setResponseHeader(resp);
+ resp.getWriter().write("Event and method aren't allowed to be both used in the same request.");
+ return;
+ }
if (process == null || !process.isAlive()) {
try {
@@ -201,12 +210,12 @@ public class ProfileServlet extends HttpServlet {
if (profilerLock.tryLock(lockTimeoutSecs, TimeUnit.SECONDS)) {
try {
File outputFile = new File(OUTPUT_DIR, "async-prof-pid-" + pid + "-" +
- event.name().toLowerCase() + "-" + ID_GEN.incrementAndGet() + "." +
+ (method == null ? event.name().toLowerCase() : method) + "-" + ID_GEN.incrementAndGet() + "." +
output.name().toLowerCase());
List<String> cmd = new ArrayList<>();
cmd.add(asyncProfilerHome + PROFILER_SCRIPT);
cmd.add("-e");
- cmd.add(event.getInternalName());
+ cmd.add(method == null ? event.getInternalName() : method);
cmd.add("-d");
cmd.add("" + duration);
cmd.add("-o");