[ 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)