[I just realized I had typed this up a day or two ago and never sent it]
+1, except there is a typo on the following line: </ew>
54 * was started with <em>-m</em> or <em>--module</ew> option
the method returns
thanks,
Chris
On 4/3/19 5:23 PM, David Holmes wrote:
Hi Daniil,
This seems reasonable, but can we add a suitable regression test
please to verify behaviour before JDK-8205654 and with this fix.
Thanks,
David
On 4/04/2019 5:02 am, Daniil Titov wrote:
Please review the change that makes jcmd process name matching on
Linux platform consistent with pre-existing behavior.
On other platforms (and on Linux platform before changes [3]) the
jcmd uses system property "sun.rt.javaCommand" (see
sun.jvmstat.monitor. MonitoredVmUtil.mainClass(MonitoredVm, boolean)
that is called from sun.tools.common. ProcessArgumentMatcher at line
96) and treats the part before the first space as a main class when
matching the process name. However, if the application is started
with -jar option this part contains the path to the jar file. If -m
or --module option is used this part contains the module name and the
main class (if the main class was specified in the command line) in
the format <modulename>/<mainclass>. After changes [3] , on Linux
platform the proc filesystem is used to find a Java process, however,
it always matches the process name against the main class regardless
what options were used to launch the application. This created
discrepancies between old and new behavior on Linux platform as well
as between behavior on Linux and other platforms. Th!
e fix changes sun.tool.ProcessHelper (that was introduced in [3])
to correct these discrepancies.
Reference:
[1] Webrev: http://cr.openjdk.java.net/~dtitov/8221730/webrev.01
[2] Bug: https://bugs.openjdk.java.net/browse/JDK-8221730
[3] https://bugs.openjdk.java.net/browse/JDK-8205654
Thanks!
--Daniil