Aled Sage created BROOKLYN-626:
----------------------------------

             Summary: jmxmp broken: ClassCastException: 
javax.management.remote.message.HandshakeBeginMessage cannot be cast to 
javax.management.remote.message.Message
                 Key: BROOKLYN-626
                 URL: https://issues.apache.org/jira/browse/BROOKLYN-626
             Project: Brooklyn
          Issue Type: Bug
    Affects Versions: 1.1.0-SNAPSHOT
            Reporter: Aled Sage


(Since upgrading to Karaf 4.2.8; bug will hopefully never be in a GA release of 
Brooklyn!).

When using jmxmp (e.g. in `Tomcat8Server` entity), Brooklyn fails with the 
exception like that below:When using jmxmp (e.g. in `Tomcat8Server` entity), 
Brooklyn fails with the exception like that below:

 
{noformat}
unable to re-connect to JMX url (repeated failure): 
service:jmx:jmxmp://34.78.32.213:31001: {}unable to re-connect to JMX url 
(repeated failure): service:jmx:jmxmp://34.78.32.213:31001: {}
java.lang.ClassCastException: 
javax.management.remote.message.HandshakeBeginMessage cannot be cast to 
javax.management.remote.message.Message 
    at 
com.sun.jmx.remote.socket.SocketConnection.readMessage(SocketConnection.java:251)
 ~[opendmk_jmxremote_optional_jar-1.0-b01-ea.jar:?] 
    at 
com.sun.jmx.remote.opt.security.AdminClient.connectionOpen(AdminClient.java:97) 
~[opendmk_jmxremote_optional_jar-1.0-b01-ea.jar:?] 
    at 
com.sun.jmx.remote.generic.ClientSynchroMessageConnectionImpl.connect(ClientSynchroMessageConnectionImpl.java:112)
 ~[opendmk_jmxremote_optional_jar-1.0-b01-ea.jar:?] 
    at 
javax.management.remote.generic.GenericConnector.connect(GenericConnector.java:217)
 ~[!/:?] 
    at 
javax.management.remote.jmxmp.JMXMPConnector.connect(JMXMPConnector.java:159) 
~[!/:?] 
    at 
javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:270)
 ~[?:1.8.0_232] 
    at org.apache.brooklyn.feed.jmx.JmxHelper.newConnector(JmxHelper.java:318) 
~[!/:1.1.0-SNAPSHOT] 
    at org.apache.brooklyn.feed.jmx.JmxHelper.connect(JmxHelper.java:277) 
~[!/:1.1.0-SNAPSHOT] 
    at org.apache.brooklyn.feed.jmx.JmxHelper.reconnect(JmxHelper.java:252) 
[!/:1.1.0-SNAPSHOT] 
    at 
org.apache.brooklyn.feed.jmx.JmxHelper.reconnectWithRetryDampened(JmxHelper.java:245)
 [!/:1.1.0-SNAPSHOT] 
    at 
org.apache.brooklyn.feed.jmx.JmxHelper.invokeWithReconnect(JmxHelper.java:494) 
[!/:1.1.0-SNAPSHOT] 
    at org.apache.brooklyn.feed.jmx.JmxHelper.findMBeans(JmxHelper.java:522) 
[!/:1.1.0-SNAPSHOT] 
    at org.apache.brooklyn.feed.jmx.JmxHelper.findMBean(JmxHelper.java:530) 
[!/:1.1.0-SNAPSHOT] 
    at 
org.apache.brooklyn.feed.jmx.JmxHelper.toLiteralObjectName(JmxHelper.java:514) 
[!/:1.1.0-SNAPSHOT] 
    at org.apache.brooklyn.feed.jmx.JmxHelper.getAttribute(JmxHelper.java:639) 
[!/:1.1.0-SNAPSHOT] 
    at org.apache.brooklyn.feed.jmx.JmxFeed$7.call(JmxFeed.java:373) 
[!/:1.1.0-SNAPSHOT] at 
org.apache.brooklyn.core.feed.Poller$PollJob$1.run(Poller.java:76) 
[!/:1.1.0-SNAPSHOT] 
    at org.apache.brooklyn.core.feed.Poller$1.call(Poller.java:158) 
[!/:1.1.0-SNAPSHOT] at 
org.apache.brooklyn.core.feed.Poller$1.call(Poller.java:151) 
[!/:1.1.0-SNAPSHOT] 
    at 
org.apache.brooklyn.util.core.task.DynamicSequentialTask$DstJob.call(DynamicSequentialTask.java:364)
 [!/:1.1.0-SNAPSHOT] 
    at 
org.apache.brooklyn.util.core.task.BasicExecutionManager$ScheduledTaskCallable$1.call(BasicExecutionManager.java:476)
 [!/:1.1.0-SNAPSHOT] 
    at 
org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:565)
 [!/:1.1.0-SNAPSHOT] 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_232] 
    at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
[?:1.8.0_232] 
    at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
[?:1.8.0_232] 
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_232]{noformat}
 

All comms over jmxmp fail, so the `JmxFeed` doesn't get its sensor values. This 
can cause entities (such as `Tomcat8Server`) to show as failing to start.

Here's a simple blueprint to reproduce:
{noformat}
location: centos7_aws_useast1
services:
  - type: org.apache.brooklyn.entity.webapp.tomcat.Tomcat8Server
    id: tomcat
    brooklyn.config:
      webapp.enabledProtocols:
        - http
        - https
      jmx.enabled: true
      jmx.password: <snip>
      webapp.https.ssl:
        keystorePassword: password
        keyAlias: tomcat
        keystoreUrl: 
https://github.com/brooklyncentral/brooklyn-tomcat-8-server/raw/master/sample-keystore{noformat}
 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to