Uploaded image for project: 'ActiveMQ Artemis'
  1. ActiveMQ Artemis
  2. ARTEMIS-2437

AMQP message conversion fails if annotations contain values outwith simple property types

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.9.0
    • 2.10.0
    • AMQP
    • None

    Description

      $ bin/artemis browser --destination example
      Consumer:: filter = null
      Consumer ActiveMQQueue[example], thread=0 trying to browse 1000 messages
      [...]
      Consumer ActiveMQQueue[example], thread=0 browsing Alert!!!
      Consumer ActiveMQQueue[example], thread=0 browsed: 4 messages
      Consumer ActiveMQQueue[example], thread=0 Browser thread finished
      

      In fact, there is 5 messages in the queue, and probably when browsing last one, the following error is printed to broker stdout.

      2019-07-31 15:07:30,742 ERROR [org.apache.activemq.artemis.core.server] AMQ224046: Exception while browser handled from Reference[627]:NON-RELIABLE:AMQPMessage [durable=false, messageID=627, address=example, size=121, applicationProperties=null, properties=Properties{messageId=null, userId=null, to='null', subject='null', replyTo='null', correlationId=null, contentType=null, contentEncoding=null, absoluteExpiryTime=null, creationTime=null, groupId='null', groupSequence=null, replyToGroupId='null'}, extraProperties = TypedProperties[_AMQ_AD=example]]: java.lang.RuntimeException: class java.util.LinkedHashMap is not a valid property type
              at org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage.toCore(AMQPMessage.java:695) [artemis-amqp-protocol-2.9.0.jar:2.9.0]
              at org.apache.activemq.artemis.core.protocol.core.impl.CoreSessionCallback.sendMessage(CoreSessionCallback.java:123) [artemis-server-2.9.0.jar:2.9.0]
              at org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl.deliverStandardMessage(ServerConsumerImpl.java:1168) [artemis-server-2.9.0.jar:2.9.0]
              at org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl.proceedDeliver(ServerConsumerImpl.java:510) [artemis-server-2.9.0.jar:2.9.0]
              at org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl$BrowserDeliverer.run(ServerConsumerImpl.java:1484) [artemis-server-2.9.0.jar:2.9.0]
              at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42) [artemis-commons-2.9.0.jar:2.9.0]
              at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31) [artemis-commons-2.9.0.jar:2.9.0]
              at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:66) [artemis-commons-2.9.0.jar:2.9.0]
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_212]
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_212]
              at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118) [artemis-commons-2.9.0.jar:2.9.0]
      Caused by: org.apache.activemq.artemis.api.core.ActiveMQPropertyConversionException: class java.util.LinkedHashMap is not a valid property type
              at org.apache.activemq.artemis.utils.collections.TypedProperties.setObjectProperty(TypedProperties.java:1112) [artemis-commons-2.9.0.jar:2.9.0]
              at org.apache.activemq.artemis.core.message.impl.CoreMessage.putObjectProperty(CoreMessage.java:1014) [artemis-core-client-2.9.0.jar:2.9.0]
              at org.apache.activemq.artemis.core.message.impl.CoreMessage.putObjectProperty(CoreMessage.java:1030) [artemis-core-client-2.9.0.jar:2.9.0]
              at org.apache.activemq.artemis.core.message.impl.CoreMessage.putObjectProperty(CoreMessage.java:53) [artemis-core-client-2.9.0.jar:2.9.0]
              at org.apache.activemq.artemis.reader.MessageUtil.setObjectProperty(MessageUtil.java:262) [artemis-core-client-2.9.0.jar:2.9.0]
              at org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSMessage.setObjectProperty(ServerJMSMessage.java:345) [artemis-amqp-protocol-2.9.0.jar:2.9.0]
              at org.apache.activemq.artemis.protocol.amqp.converter.AmqpCoreConverter.setProperty(AmqpCoreConverter.java:441) [artemis-amqp-protocol-2.9.0.jar:2.9.0]
              at org.apache.activemq.artemis.protocol.amqp.converter.AmqpCoreConverter.processMessageAnnotations(AmqpCoreConverter.java:281) [artemis-amqp-protocol-2.9.0.jar:2.9.0]
              at org.apache.activemq.artemis.protocol.amqp.converter.AmqpCoreConverter.toCore(AmqpCoreConverter.java:202) [artemis-amqp-protocol-2.9.0.jar:2.9.0]
              at org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage.toCore(AMQPMessage.java:692) [artemis-amqp-protocol-2.9.0.jar:2.9.0]
              ... 10 more
      

      When browsing messages in web console, no messages are displayed for this queue.

      I will add reproducer when I create it.

      Attachments

        Issue Links

          Activity

            People

              tabish Timothy A. Bish
              jdanek Jiri Daněk
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 2h
                  2h