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


Reply via email to