[jboss-jira] [JBoss JIRA] (WFLY-3054) getPlatformMBeanServer behaves badly when called from premain class such as jmxetric

Alec Henninger (JIRA) issues at jboss.org
Mon Dec 11 21:59:00 EST 2017


    [ https://issues.jboss.org/browse/WFLY-3054?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13504183#comment-13504183 ] 

Alec Henninger commented on WFLY-3054:
--------------------------------------

FWIW I believe this can be roughly solved by waiting for the "javax.management.builder.initial" system property to be set before calling ManagementFactory.getPlatformMBeanServer(). jboss-modules sets it programmatically, and if the platform MBeanServer is initialized too soon, it won't be created using the custom builder: https://github.com/jboss-modules/jboss-modules/blob/1.x/src/main/java/org/jboss/modules/Main.java#L520

> getPlatformMBeanServer behaves badly when called from premain class such as jmxetric
> ------------------------------------------------------------------------------------
>
>                 Key: WFLY-3054
>                 URL: https://issues.jboss.org/browse/WFLY-3054
>             Project: WildFly
>          Issue Type: Enhancement
>          Components: JMX
>    Affects Versions: JBoss AS7 7.1.1.Final
>            Reporter: dpocock
>            Assignee: Kabir Khan
>              Labels: jboss
>
> JMXetric is a management agent JAR loaded using the JVM argument 
> java -javaagent:$JARLIBS/jmxetric-1.0.2.jar .....
> In the premain method (executed before JBoss main() is invoked), jmxetric calls the static method:
>    ManagementFactory.getPlatformMBeanServer()
> This puts JMX into a bad state and the jboss.as tree is completely missing when browsed with jconsole
> As a workaround, jmxetric will defer the call to ManagementFactory.getPlatformMBeanServer() using the "initialdelay" parameter set to a value such as 20 seconds.
> However, it would be good if JBoss could act more cleanly in this situation, for example, throwing an exception if ManagementFactory.getPlatformMBeanServer() is called too early, or finding a way to add the "jboss.as" stuff later.
> The 1.0.6 release of jmxetric will include the workaround by default.  The bug can be reproduced by setting initialdelay="0" in the sample jmxetric.xml or using jmxetric 1.0.5
> jmxetric versions before 1.0.5 suffer from issues with the jboss logger as discussed in WFLY-895, so this issue was only discovered after removing the logging statements from jmxetric.
> Also covered in jmxetric github:
> https://github.com/ganglia/jmxetric/issues/9



--
This message was sent by Atlassian JIRA
(v7.5.0#75005)


More information about the jboss-jira mailing list