You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Erwin Dondorp (Jira)" <ji...@apache.org> on 2021/09/06 09:15:00 UTC

[jira] [Created] (ARTEMIS-3461) Browse Queue fails when the queue contains AMQP highly structured messages

Erwin Dondorp created ARTEMIS-3461:
--------------------------------------

             Summary: Browse Queue fails when the queue contains AMQP highly structured messages
                 Key: ARTEMIS-3461
                 URL: https://issues.apache.org/jira/browse/ARTEMIS-3461
             Project: ActiveMQ Artemis
          Issue Type: Bug
          Components: Web Console
    Affects Versions: 2.18.0
            Reporter: Erwin Dondorp


send AMQP message to broker with a complex AMQP data structure of at least 2 levels.
e.g. an array containing another array
the code below are 6 individual snippets of simple qpid-proton-PY implementations:
        msg = proton.Message('hello') --> OK (no levels)
        msg = proton.Message([4,5,6,'hello']) --> OK (1 level)
        msg = proton.Message({"a":4,"b":5,"c":6,"d":'hello'}) --> OK (1 level)
        msg = proton.Message([4,5,6,["abc","def","ghi"]]) --> FAIL (2 levels)
        msg = proton.Message([4,{"a":5,"b":5,"c":5},6]) --> FAIL (2 levels)
        msg = proton.Message({"a":[4,5,6,'hello']}) --> FAIL (2 levels)

The messages can be constructed and send in proton without any problem. The messages also look good when they are inspected using WireShark.

The problem occurs when viewing the messages with "Browse queue" in the Artemis console.
The message/page counters a properly populated, but the table remains empty.
In the log-file, the following exception is shown:

{noformat}
2021-09-06 09:10:51,863 WARN  [org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage] class java.util.ArrayList is not a valid property type: org.apache.activemq.artemis.api.core.ActiveMQPropertyConversionException: class java.util.ArrayList is not a valid property type
   at org.apache.activemq.artemis.utils.collections.TypedProperties.setObjectProperty(TypedProperties.java:1194) [artemis-commons-2.18.0. jar:2.18.0]
   at org.apache.activemq.artemis.protocol.amqp.converter.coreWrapper.CoreMapMessageWrapper.setObject(CoreMapMessageWrapper.java:140) [artemis-amqp-protocol-2.18.0.jar:2.18.0]
   at org.apache.activemq.artemis.protocol.amqp.converter.AMQPMessageSupport.createMapMessage(AMQPMessageSupport.java:364) [artemis-amqp-protocol-2.18.0.jar:2.18.0]
   at org.apache.activemq.artemis.protocol.amqp.converter.AmqpCoreConverter.toCore(AmqpCoreConverter.java:197) [artemis-amqp-protocol-2.18.0.jar:2.18.0]
   at org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage.toCore(AMQPMessage.java:865) [artemis-amqp-protocol-2.18.0.jar:2.18.0]
   at org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage.toCore(AMQPMessage.java:875) [artemis-amqp-protocol-2.18.0.jar:2.18.0]
   at org.apache.activemq.artemis.core.management.impl.openmbean.OpenTypeSupport.convert(OpenTypeSupport.java:53) [artemis-server-2.18.0.jar:2.18.0]
   at org.apache.activemq.artemis.core.management.impl.QueueControlImpl.browse(QueueControlImpl.java:1575) [artemis-server-2.18.0.jar:2.18.0]
   at sun.reflect.GeneratedMethodAccessor122.invoke(Unknown Source) [:1.8.0_302]
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_302]
   at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_302]
   at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:72) [rt.jar:1.8.0_302]
   at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) [:1.8.0_302]
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_302]
   at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_302]
   at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:276) [rt.jar:1.8.0_302]
   at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:112) [rt.jar:1.8.0_302]
   at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:46) [rt.jar:1.8.0_302]
   at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237) [rt.jar:1.8.0_302]
   at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138) [rt.jar:1.8.0_302]
   at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252) [rt.jar:1.8.0_302]
   at javax.management.StandardMBean.invoke(StandardMBean.java:405) [rt.jar:1.8.0_302]
   at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) [rt.jar:1.8.0_302]
   at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) [rt.jar:1.8.0_302]
   at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source) [:1.8.0_302]
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_302]
   at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_302]
   at org.apache.activemq.artemis.core.server.management.ArtemisMBeanServerBuilder$MBeanInvocationHandler.invoke(ArtemisMBeanServerBuilder.java:96) [artemis-server-2.18.0.jar:2.18.0]
   at com.sun.proxy.$Proxy13.invoke(Unknown Source)
   at org.jolokia.handler.ExecHandler.doHandleRequest(ExecHandler.java:98) [jolokia-core-1.6.2.jar:]
   at org.jolokia.handler.ExecHandler.doHandleRequest(ExecHandler.java:40) [jolokia-core-1.6.2.jar:]
   at org.jolokia.handler.JsonRequestHandler.handleRequest(JsonRequestHandler.java:89) [jolokia-core-1.6.2.jar:]
   at org.jolokia.backend.MBeanServerExecutorLocal.handleRequest(MBeanServerExecutorLocal.java:109) [jolokia-core-1.6.2.jar:]
   at org.jolokia.backend.MBeanServerHandler.dispatchRequest(MBeanServerHandler.java:161) [jolokia-core-1.6.2.jar:]
   at org.jolokia.backend.LocalRequestDispatcher.dispatchRequest(LocalRequestDispatcher.java:99) [jolokia-core-1.6.2.jar:]
   at org.jolokia.backend.BackendManager.callRequestDispatcher(BackendManager.java:429) [jolokia-core-1.6.2.jar:]
   at org.jolokia.backend.BackendManager.handleRequest(BackendManager.java:158) [jolokia-core-1.6.2.jar:]
   at org.jolokia.http.HttpRequestHandler.executeRequest(HttpRequestHandler.java:197) [jolokia-core-1.6.2.jar:]
   at org.jolokia.http.HttpRequestHandler.handlePostRequest(HttpRequestHandler.java:137) [jolokia-core-1.6.2.jar:]
   at org.jolokia.http.AgentServlet$3.handleRequest(AgentServlet.java:460) [jolokia-core-1.6.2.jar:]
   at org.jolokia.http.AgentServlet.handleSecurely(AgentServlet.java:350) [jolokia-core-1.6.2.jar:]
   at org.jolokia.http.AgentServlet.handle(AgentServlet.java:321) [jolokia-core-1.6.2.jar:]
   at org.jolokia.http.AgentServlet.doPost(AgentServlet.java:284) [jolokia-core-1.6.2.jar:]
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) [jetty-all-9.4.43.v20210629-uber.jar:9.4.43.v20210629]
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [jetty-all-9.4.43.v20210629-uber.jar:9.4.43.v20210629]
   at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1459)
   at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
   at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626)
   at io.hawt.web.filters.FlightRecordingDownloadFacade.doFilter(FlightRecordingDownloadFacade.java:68) [hawtio-system-2.13.5.jar:2.13.5]
   at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
   at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
   at io.hawt.web.auth.LoginRedirectFilter.doFilter(LoginRedirectFilter.java:57) [hawtio-system-2.13.5.jar:2.13.5]
   at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
   at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
   at io.hawt.web.auth.AuthenticationFilter.lambda$executeAs$1(AuthenticationFilter.java:105) [hawtio-system-2.13.5.jar:2.13.5]
   at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.8.0_302]
   at javax.security.auth.Subject.doAs(Subject.java:422) [rt.jar:1.8.0_302]
   at io.hawt.web.auth.AuthenticationFilter.executeAs(AuthenticationFilter.java:104) [hawtio-system-2.13.5.jar:2.13.5]
   at io.hawt.web.auth.AuthenticationFilter.doFilter(AuthenticationFilter.java:72) [hawtio-system-2.13.5.jar:2.13.5]
   at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
   at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
   at io.hawt.web.filters.HttpHeaderFilter.doFilter(HttpHeaderFilter.java:43) [hawtio-system-2.13.5.jar:2.13.5]
   at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
   at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
   at io.hawt.web.filters.HttpHeaderFilter.doFilter(HttpHeaderFilter.java:43) [hawtio-system-2.13.5.jar:2.13.5]
   at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
   at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
   at io.hawt.web.filters.HttpHeaderFilter.doFilter(HttpHeaderFilter.java:43) [hawtio-system-2.13.5.jar:2.13.5]
   at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
   at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
   at io.hawt.web.filters.HttpHeaderFilter.doFilter(HttpHeaderFilter.java:43) [hawtio-system-2.13.5.jar:2.13.5]
   at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
   at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
   at io.hawt.web.filters.HttpHeaderFilter.doFilter(HttpHeaderFilter.java:43) [hawtio-system-2.13.5.jar:2.13.5]
   at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
   at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
   at io.hawt.web.filters.HttpHeaderFilter.doFilter(HttpHeaderFilter.java:43) [hawtio-system-2.13.5.jar:2.13.5]
   at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
   at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
   at io.hawt.web.filters.HttpHeaderFilter.doFilter(HttpHeaderFilter.java:43) [hawtio-system-2.13.5.jar:2.13.5]
   at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
   at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
   at io.hawt.web.filters.HttpHeaderFilter.doFilter(HttpHeaderFilter.java:43) [hawtio-system-2.13.5.jar:2.13.5]
   at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
   at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
   at io.hawt.web.auth.SessionExpiryFilter.process(SessionExpiryFilter.java:166) [hawtio-system-2.13.5.jar:2.13.5]
   at io.hawt.web.auth.SessionExpiryFilter.doFilter(SessionExpiryFilter.java:60) [hawtio-system-2.13.5.jar:2.13.5]
   at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:201)
   at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
   at org.apache.activemq.artemis.component.JolokiaFilter.doFilter(JolokiaFilter.java:50) [artemis-web-2.18.0.jar:2.18.0]
   at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
   at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
   at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548)
   at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
   at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:602)
   at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
   at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
   at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
   at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
   at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1434)
   at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
   at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)
   at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
   at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
   at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1349)
   at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
   at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:59)
   at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
   at org.eclipse.jetty.server.Server.handle(Server.java:516)
   at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388)
   at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633)
   at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380)
   at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
   at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
   at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
   at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
   at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
   at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
   at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
   at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
   at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:386)
   at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
   at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
   at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_302]
{noformat}




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