HDDS-2159. Fix Race condition in ProfileServlet#pid.

Signed-off-by: Anu Engineer <aengineer@apache.org>
This commit is contained in:
Hanisha Koneru 2019-09-20 13:06:29 -07:00 committed by Anu Engineer
parent 6cbe5d3809
commit 0a716bd3a5

View File

@ -119,7 +119,7 @@ public class ProfileServlet extends HttpServlet {
Pattern.compile(FILE_PREFIX + "[0-9]+-[0-9A-Za-z\\-_]+-[0-9]+\\.[a-z]+");
private Lock profilerLock = new ReentrantLock();
private Integer pid;
private final Integer pid;
private String asyncProfilerHome;
private transient Process process;
@ -208,11 +208,11 @@ protected void doGet(final HttpServletRequest req,
return;
}
// if pid is explicitly specified, use it else default to current process
pid = getInteger(req, "pid", pid);
Integer processId = getInteger(req, "pid", pid);
// if pid is not specified in query param and if current process pid
// cannot be determined
if (pid == null) {
if (processId == null) {
resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
setResponseHeader(resp);
resp.getWriter().write(
@ -243,7 +243,7 @@ protected void doGet(final HttpServletRequest req,
//Should be in sync with FILE_NAME_PATTERN
File outputFile =
OUTPUT_DIR.resolve(
ProfileServlet.generateFileName(pid, output, event))
ProfileServlet.generateFileName(processId, output, event))
.toFile();
List<String> cmd = new ArrayList<>();
cmd.add(asyncProfilerHome + PROFILER_SCRIPT);
@ -288,7 +288,7 @@ protected void doGet(final HttpServletRequest req,
if (reverse) {
cmd.add("--reverse");
}
cmd.add(pid.toString());
cmd.add(processId.toString());
process = runCmdAsync(cmd);
// set response and set refresh header to output location