[ 
https://issues.apache.org/jira/browse/ARTEMIS-3461?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Clebert Suconic reopened ARTEMIS-3461:
--------------------------------------

> 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
>            Assignee: Clebert Suconic
>            Priority: Major
>             Fix For: 2.20.0
>
>          Time Spent: 3h 20m
>  Remaining Estimate: 0h
>
> 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:
> {code:java}
> msg = proton.Message('hello') --> OK (no levels)
> {code}
> {code:java}
> msg = proton.Message([4,5,6,'hello']) --> OK (1 level)
> {code}
> {code:java}
> msg = proton.Message({"a":4,"b":5,"c":6,"d":'hello'}) --> OK (1 level)
> {code}
> {code:java}
> msg = proton.Message([4,5,6,["abc","def","ghi"]]) --> FAIL (2 levels)
> {code}
> {code:java}
> msg = proton.Message([4,{"a":5,"b":5,"c":5},6]) --> FAIL (2 levels)
> {code}
> {code:java}
> msg = proton.Message({"a":[4,5,6,'hello']}) --> FAIL (2 levels)
> {code}
> 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 are 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}
> The stack trace has minor differences based on the exact message structure.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to