Marko Kohtala created ARTEMIS-2446:
--------------------------------------
Summary: AMQP message transmission with UUID properties fails
Key: ARTEMIS-2446
URL: https://issues.apache.org/jira/browse/ARTEMIS-2446
Project: ActiveMQ Artemis
Issue Type: Bug
Components: AMQP
Affects Versions: 2.9.0
Environment: I run the broker in a Docker container created based on
[https://github.com/vromero/activemq-artemis-docker.] It is based on
openjdk:8u222-jdk-stretch image. I've removed the etc and etc-override volumes,
removed the excess protocol jars, added guest login.
Reporter: Marko Kohtala
I have an application using AMQP messaging and it works with ActiveMQ Artemis
for small messages, but is failing for larger messages with error:
{noformat}
2019-08-06T06:47:01.793175725Z Calculating performance journal ...
2019-08-06T06:47:22.324883428Z 144000
2019-08-06T06:47:33.378573751Z _ _ _
2019-08-06T06:47:33.378610153Z / \ ____| |_ ___ __ __(_) _____
2019-08-06T06:47:33.378622654Z / _ \| _ \ __|/ _ \ \/ | |/ __/
2019-08-06T06:47:33.378634254Z / ___ \ | \/ |_/ __/ |\/| | |\___ \
2019-08-06T06:47:33.378645955Z /_/ \_\| \__\____|_| |_|_|/___ /
2019-08-06T06:47:33.378657155Z Apache ActiveMQ Artemis 2.9.0
2019-08-06T06:47:33.378668156Z
2019-08-06T06:47:33.378679156Z
2019-08-06T06:47:37.544726699Z 2019-08-06 06:47:37,477 INFO
[org.apache.activemq.artemis.integration.bootstrap] AMQ101000: Starting
ActiveMQ Artemis Server
2019-08-06T06:47:38.565550895Z 2019-08-06 06:47:38,564 INFO
[org.apache.activemq.artemis.core.server] AMQ221000: live Message Broker is
starting with configuration Broker Configuration
(clustered=false,journalDirectory=data/journal,bindingsDirectory=data/bindings,largeMessagesDirectory=data/large-messages,pagingDirectory=data/paging)
2019-08-06T06:47:38.742539672Z 2019-08-06 06:47:38,738 INFO
[org.apache.activemq.artemis.core.server] AMQ221012: Using AIO Journal
2019-08-06T06:47:39.048523728Z 2019-08-06 06:47:39,043 INFO
[org.apache.activemq.artemis.core.server] AMQ221057: Global Max Size is being
adjusted to 1/2 of the JVM max size (-Xmx). being defined as 3,099,590,656
2019-08-06T06:47:39.281507988Z 2019-08-06 06:47:39,278 INFO
[org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found:
[artemis-server]. Adding protocol support for: CORE
2019-08-06T06:47:39.281536789Z 2019-08-06 06:47:39,279 INFO
[org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found:
[artemis-amqp-protocol]. Adding protocol support for: AMQP
2019-08-06T06:47:40.433221253Z 2019-08-06 06:47:40,426 INFO
[org.apache.activemq.artemis.core.server] AMQ221034: Waiting indefinitely to
obtain live lock
2019-08-06T06:47:40.433255155Z 2019-08-06 06:47:40,427 INFO
[org.apache.activemq.artemis.core.server] AMQ221035: Live Server Obtained live
lock
2019-08-06T06:47:40.927969551Z 2019-08-06 06:47:40,925 INFO
[org.apache.activemq.artemis.core.server] AMQ221080: Deploying address DLQ
supporting [ANYCAST]
2019-08-06T06:47:41.038512746Z 2019-08-06 06:47:41,035 INFO
[org.apache.activemq.artemis.core.server] AMQ221003: Deploying ANYCAST queue
DLQ on address DLQ
2019-08-06T06:47:41.822560701Z 2019-08-06 06:47:41,814 INFO
[org.apache.activemq.artemis.core.server] AMQ221080: Deploying address
ExpiryQueue supporting [ANYCAST]
2019-08-06T06:47:41.831706739Z 2019-08-06 06:47:41,830 INFO
[org.apache.activemq.artemis.core.server] AMQ221003: Deploying ANYCAST queue
ExpiryQueue on address ExpiryQueue
2019-08-06T06:47:41.857242562Z 2019-08-06 06:47:41,850 INFO
[org.apache.activemq.artemis.core.server] AMQ221080: Deploying address
/exchange/amq.fanout/analysis supporting [MULTICAST]
2019-08-06T06:47:41.876622291Z 2019-08-06 06:47:41,875 INFO
[org.apache.activemq.artemis.core.server] AMQ221080: Deploying address
/topic/heartbeat supporting [MULTICAST]
2019-08-06T06:47:43.249534752Z 2019-08-06 06:47:43,242 INFO
[org.apache.activemq.artemis.core.server] AMQ221020: Started EPOLL Acceptor at
0.0.0.0:5672 for protocols [AMQP]
2019-08-06T06:47:43.274616353Z 2019-08-06 06:47:43,267 INFO
[org.apache.activemq.artemis.core.server] AMQ221007: Server is now live
2019-08-06T06:47:43.274655755Z 2019-08-06 06:47:43,267 INFO
[org.apache.activemq.artemis.core.server] AMQ221001: Apache ActiveMQ Artemis
Message Broker version 2.9.0 [ae09008555df,
nodeID=147edb1d-b816-11e9-a90c-02420ae0020c]
2019-08-06T06:47:47.820575804Z 2019-08-06 06:47:47,816 INFO
[org.apache.activemq.hawtio.branding.PluginContextListener] Initialized
activemq-branding plugin
2019-08-06T06:47:48.735664537Z 2019-08-06 06:47:48,685 INFO
[org.apache.activemq.hawtio.plugin.PluginContextListener] Initialized
artemis-plugin plugin
2019-08-06T06:47:52.505572720Z 2019-08-06 06:47:52,453 INFO
[io.hawt.HawtioContextListener] Initialising hawtio services
2019-08-06T06:47:52.660606946Z 2019-08-06 06:47:52,660 INFO
[io.hawt.system.ConfigManager] Configuration will be discovered via system
properties
2019-08-06T06:47:52.682554698Z 2019-08-06 06:47:52,681 INFO
[io.hawt.jmx.JmxTreeWatcher] Welcome to hawtio 1.5.5 : http://hawt.io/ : Don't
cha wish your console was hawt like me? ;-)
2019-08-06T06:47:52.706528646Z 2019-08-06 06:47:52,701 INFO
[io.hawt.jmx.UploadManager] Using file upload directory:
/var/lib/artemis/tmp/uploads
2019-08-06T06:47:52.886588371Z 2019-08-06 06:47:52,885 INFO
[io.hawt.web.AuthenticationFilter] Starting hawtio authentication filter, JAAS
realm: "activemq" authorized role(s): "amq" role principal classes:
"org.apache.activemq.artemis.spi.core.security.jaas.RolePrincipal"
2019-08-06T06:47:53.130576058Z 2019-08-06 06:47:53,128 INFO
[io.hawt.web.JolokiaConfiguredAgentServlet] Jolokia overridden property:
[key=policyLocation, value=file:/var/lib/artemis/etc/jolokia-access.xml]
2019-08-06T06:47:53.247602164Z 2019-08-06 06:47:53,237 INFO
[io.hawt.web.RBACMBeanInvoker] Using MBean
[hawtio:type=security,area=jmx,rank=0,name=HawtioDummyJMXSecurity] for role
based access control
2019-08-06T06:47:54.733611447Z 2019-08-06 06:47:54,732 INFO
[io.hawt.system.ProxyWhitelist] Initial proxy whitelist: [localhost, 127.0.0.1,
10.224.2.12, ae09008555df]
2019-08-06T06:47:55.819600768Z 2019-08-06 06:47:55,818 INFO
[org.apache.activemq.artemis] AMQ241001: HTTP Server started at
http://0.0.0.0:8161
2019-08-06T06:47:55.819647370Z 2019-08-06 06:47:55,818 INFO
[org.apache.activemq.artemis] AMQ241002: Artemis Jolokia REST API available at
http://0.0.0.0:8161/console/jolokia
2019-08-06T06:47:55.819661171Z 2019-08-06 06:47:55,819 INFO
[org.apache.activemq.artemis] AMQ241004: Artemis Console available at
http://0.0.0.0:8161/console
2019-08-06T06:49:43.223569212Z 2019-08-06 06:49:43,190 WARN
[org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerReceiverContext]
class java.util.UUID is not a valid property type: java.lang.RuntimeException:
class java.util.UUID is not a valid property type
2019-08-06T06:49:43.223597713Z at
org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage.toCore(AMQPMessage.java:695)
[artemis-amqp-protocol-2.9.0.jar:2.9.0]
2019-08-06T06:49:43.223611514Z at
org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage.toCore(AMQPMessage.java:701)
[artemis-amqp-protocol-2.9.0.jar:2.9.0]
2019-08-06T06:49:43.223623515Z at
org.apache.activemq.artemis.core.persistence.impl.journal.LargeServerMessageImpl.asLargeMessage(LargeServerMessageImpl.java:63)
[artemis-server-2.9.0.jar:2.9.0]
2019-08-06T06:49:43.223643615Z at
org.apache.activemq.artemis.core.persistence.impl.journal.LargeServerMessageImpl.checkLargeMessage(LargeServerMessageImpl.java:56)
[artemis-server-2.9.0.jar:2.9.0]
2019-08-06T06:49:43.223656216Z at
org.apache.activemq.artemis.core.server.impl.ServerSessionImpl.send(ServerSessionImpl.java:1631)
[artemis-server-2.9.0.jar:2.9.0]
2019-08-06T06:49:43.223667717Z at
org.apache.activemq.artemis.protocol.amqp.broker.AMQPSessionCallback.serverSend(AMQPSessionCallback.java:510)
[artemis-amqp-protocol-2.9.0.jar:2.9.0]
2019-08-06T06:49:43.223679017Z at
org.apache.activemq.artemis.protocol.amqp.broker.AMQPSessionCallback.serverSend(AMQPSessionCallback.java:470)
[artemis-amqp-protocol-2.9.0.jar:2.9.0]
2019-08-06T06:49:43.223690518Z at
org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerReceiverContext.actualDelivery(ProtonServerReceiverContext.java:304)
[artemis-amqp-protocol-2.9.0.jar:2.9.0]
2019-08-06T06:49:43.223702218Z at
org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerReceiverContext.onMessage(ProtonServerReceiverContext.java:299)
[artemis-amqp-protocol-2.9.0.jar:2.9.0]
2019-08-06T06:49:43.223713819Z at
org.apache.activemq.artemis.protocol.amqp.proton.AMQPConnectionContext.onDelivery(AMQPConnectionContext.java:541)
[artemis-amqp-protocol-2.9.0.jar:2.9.0]
2019-08-06T06:49:43.223725619Z at
org.apache.activemq.artemis.protocol.amqp.proton.handler.Events.dispatch(Events.java:92)
[artemis-amqp-protocol-2.9.0.jar:2.9.0]
2019-08-06T06:49:43.223738920Z at
org.apache.activemq.artemis.protocol.amqp.proton.handler.ProtonHandler.dispatch(ProtonHandler.java:485)
[artemis-amqp-protocol-2.9.0.jar:2.9.0]
2019-08-06T06:49:43.223751021Z at
org.apache.activemq.artemis.protocol.amqp.proton.handler.ProtonHandler.flush(ProtonHandler.java:285)
[artemis-amqp-protocol-2.9.0.jar:2.9.0]
2019-08-06T06:49:43.223762421Z at
org.apache.activemq.artemis.protocol.amqp.proton.handler.ProtonHandler.inputBuffer(ProtonHandler.java:242)
[artemis-amqp-protocol-2.9.0.jar:2.9.0]
2019-08-06T06:49:43.223773722Z at
org.apache.activemq.artemis.protocol.amqp.proton.AMQPConnectionContext.inputBuffer(AMQPConnectionContext.java:170)
[artemis-amqp-protocol-2.9.0.jar:2.9.0]
2019-08-06T06:49:43.223785422Z at
org.apache.activemq.artemis.protocol.amqp.broker.ActiveMQProtonRemotingConnection.bufferReceived(ActiveMQProtonRemotingConnection.java:149)
[artemis-amqp-protocol-2.9.0.jar:2.9.0]
2019-08-06T06:49:43.223797023Z at
org.apache.activemq.artemis.core.remoting.server.impl.RemotingServiceImpl$DelegatingBufferHandler.bufferReceived(RemotingServiceImpl.java:649)
[artemis-server-2.9.0.jar:2.9.0]
2019-08-06T06:49:43.223808723Z at
org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.channelRead(ActiveMQChannelHandler.java:73)
[artemis-core-client-2.9.0.jar:2.9.0]
2019-08-06T06:49:43.223820324Z at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
[netty-all-4.1.34.Final.jar:4.1.34.Final]
2019-08-06T06:49:43.223831924Z at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
[netty-all-4.1.34.Final.jar:4.1.34.Final]
2019-08-06T06:49:43.223848725Z at
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:337)
[netty-all-4.1.34.Final.jar:4.1.34.Final]
2019-08-06T06:49:43.223882727Z at
io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1408)
[netty-all-4.1.34.Final.jar:4.1.34.Final]
2019-08-06T06:49:43.223899028Z at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
[netty-all-4.1.34.Final.jar:4.1.34.Final]
2019-08-06T06:49:43.223910728Z at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
[netty-all-4.1.34.Final.jar:4.1.34.Final]
2019-08-06T06:49:43.223922529Z at
io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930)
[netty-all-4.1.34.Final.jar:4.1.34.Final]
2019-08-06T06:49:43.223936029Z at
io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:796)
[netty-all-4.1.34.Final.jar:4.1.34.Final]
2019-08-06T06:49:43.223948330Z at
io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe$1.run(AbstractEpollChannel.java:382)
[netty-all-4.1.34.Final.jar:4.1.34.Final]
2019-08-06T06:49:43.223959931Z at
io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
[netty-all-4.1.34.Final.jar:4.1.34.Final]
2019-08-06T06:49:43.223971531Z at
io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404)
[netty-all-4.1.34.Final.jar:4.1.34.Final]
2019-08-06T06:49:43.223982932Z at
io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:333)
[netty-all-4.1.34.Final.jar:4.1.34.Final]
2019-08-06T06:49:43.223994632Z at
io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:905)
[netty-all-4.1.34.Final.jar:4.1.34.Final]
2019-08-06T06:49:43.224006533Z at
org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
[artemis-commons-2.9.0.jar:2.9.0]
2019-08-06T06:49:43.224018233Z Caused by: javax.jms.MessageFormatException:
class java.util.UUID is not a valid property type
2019-08-06T06:49:43.224030134Z at
org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSMapMessage.setObject(ServerJMSMapMessage.java:140)
[artemis-amqp-protocol-2.9.0.jar:2.9.0]
2019-08-06T06:49:43.224041935Z at
org.apache.activemq.artemis.protocol.amqp.converter.AMQPMessageSupport.createMapMessage(AMQPMessageSupport.java:363)
[artemis-amqp-protocol-2.9.0.jar:2.9.0]
2019-08-06T06:49:43.224053535Z at
org.apache.activemq.artemis.protocol.amqp.converter.AmqpCoreConverter.toCore(AmqpCoreConverter.java:184)
[artemis-amqp-protocol-2.9.0.jar:2.9.0]
2019-08-06T06:49:43.224065136Z at
org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage.toCore(AMQPMessage.java:692)
[artemis-amqp-protocol-2.9.0.jar:2.9.0]
2019-08-06T06:49:43.224076736Z ... 31 more
2019-08-06T06:49:43.224087837Z
{noformat}
The message structure is as follows (this is a smaller message as decoded by
Wireshark, and I have removed some redundant and private elements from body to
only show all the AMQP types used, but larger messages differ in a body vbin8
content).
{noformat}
Internet Protocol Version 4, Src: 172.18.0.8, Dst: 172.18.0.2
Transmission Control Protocol, Src Port: 56776, Dst Port: 5672, Seq: 3932659,
Ack: 629, Len: 349
Advanced Message Queueing Protocol
Length: 349
Doff: 2
Type: AMQP (0)
Channel: 0
Performative: transfer (20)
Arguments
Handle: 1
Delivery-Id: 2
Delivery-Tag: 32
Message-Format: 0
Settled: False
More: False
Message-Header
Message-Properties
Correlation-Id: 8e944ee0-b841-11e9-9356-c7125349b5ec
AMQP-Value (map of 10 elements)
position (uuid): cd9d2fa0-b817-11e9-b2e1-1fd86d72a1ef
tags (list of 0 elements)
dtags (map of 0 elements)
filename (str8-utf8): 1x1.png
picture (vbin8): 89504e470d0a1a0a0000000d494844520000000100000001...
content-type (str8-utf8): image/png
date-taken (timestamp): Oct 16, 2018 16:48:36.000000000
{noformat}
If I read the stack trace and source right, it is converting the body to JMS
message for storing in large-message storage. This is somewhat unfortunate, as
I have no JMS use for the message. I am all AMQP and would prefer nothing to be
changed. UUID is very nice, as the AMQP libraries convert it to native types
that work well towards other interfaces.
I've had plans to move some fields with UUID values from body to application
properties header in hopes they could be used for routing and filtering. Seems
if I do that there will be another path where similar limitation in supported
types will hit the message.
I am interested if there is a workaround I can use while I wait for next
version with support for remaining AMQP types.
--
This message was sent by Atlassian JIRA
(v7.6.14#76016)