8183123: JDP packets have no processId context set
Reviewed-by: dcubed, clanger
Contributed-by: andrew_m_leonard@uk.ibm.com
--- a/jdk/src/jdk.management.agent/share/classes/sun/management/jdp/JdpController.java Mon Jul 17 11:47:12 2017 +0200
+++ b/jdk/src/jdk.management.agent/share/classes/sun/management/jdp/JdpController.java Mon Jul 17 15:46:34 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -33,6 +33,7 @@
import java.lang.management.RuntimeMXBean;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
+import java.lang.UnsupportedOperationException;
import sun.management.VMManagement;
/**
@@ -132,19 +133,11 @@
}
// Get the process id of the current running Java process
- private static Integer getProcessId() {
+ private static Long getProcessId() {
try {
- // Get the current process id using a reflection hack
- RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean();
- Field jvm = runtime.getClass().getDeclaredField("jvm");
- jvm.setAccessible(true);
-
- VMManagement mgmt = (sun.management.VMManagement) jvm.get(runtime);
- Method pid_method = mgmt.getClass().getDeclaredMethod("getProcessId");
- pid_method.setAccessible(true);
- Integer pid = (Integer) pid_method.invoke(mgmt);
- return pid;
- } catch(Exception ex) {
+ // Get the current process id
+ return ProcessHandle.current().pid();
+ } catch(UnsupportedOperationException ex) {
return null;
}
}
@@ -206,7 +199,7 @@
packet.setBroadcastInterval(Integer.toString(pause));
// Set process id
- Integer pid = getProcessId();
+ Long pid = getProcessId();
if (pid != null) {
packet.setProcessId(pid.toString());
}
--- a/jdk/test/sun/management/jdp/JdpOnTestCase.java Mon Jul 17 11:47:12 2017 +0200
+++ b/jdk/test/sun/management/jdp/JdpOnTestCase.java Mon Jul 17 15:46:34 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
import java.net.SocketTimeoutException;
import java.util.Map;
+import static jdk.testlibrary.Asserts.assertNotEquals;
public class JdpOnTestCase extends JdpTestCase {
@@ -58,6 +59,7 @@
final String jdpName = payload.get("INSTANCE_NAME");
log.fine("Received correct JDP packet #" + String.valueOf(receivedJDPpackets) +
", jdp.name=" + jdpName);
+ assertNotEquals(null, payload.get("PROCESS_ID"), "Expected payload.get(\"PROCESS_ID\") to be not null.");
}
/**