jmx-dev RFR: 8306806: JMX agent with JDP enabled won't start when PerfData is disabled
David Holmes
dholmes at openjdk.org
Fri May 12 04:58:42 UTC 2023
On Thu, 11 May 2023 11:42:38 GMT, Kevin Walls <kevinw at openjdk.org> wrote:
> Java Discovery Protocol (perhaps a hidden feature, but maybe should be more widely known!) and -XX:-UsePerfData together cause a failure to startup.
>
> PerfData is the mechanism for communicating the URL and other properties for remote management, so disabling PerfData clearly breaks this. But there should be a clearer message, and not a fatal error.
>
> e.g.
> $ java -XX:-UsePerfData -Dcom.sun.management.jmxremote.autodiscovery=true -Dcom.sun.management.jmxremote.port=0 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false --version
> Warning: Exception thrown by the agent : JDP not starting, PerfData not available: Empty PerfData buffer
> java 21-internal 2023-09-19 LTS
> ...etc...
>
> The use of PerfData is superior to the previous hard-coding of knowledge of the URL protocol and structure, and is required to communicate a dynamically assigned port (JDK-8167337).
src/jdk.management.agent/share/classes/jdk/internal/agent/Agent.java line 506:
> 504: remoteProps = ConnectorAddressLink.importRemoteFrom(0);
> 505: } catch (IOException ioe) {
> 506: warning(AGENT_EXCEPTION, "JDP not starting, PerfData not available: " + ioe.getMessage());
Is this the only possible reason?
As per the JBS link I added there is a general problem about the Java side of the "Perf" code not knowing/realizing that `UsePerfData` can be disabled. Ideally there would be a way to query this, or a specific type of exception that could be thrown to report it.
Will the user understand what this message means? Should it explicitly say "please ensure -XX:-UsePerfData" is not set?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/13928#discussion_r1191905273
More information about the jmx-dev
mailing list