[
https://issues.apache.org/jira/browse/ARTEMIS-1928?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16521108#comment-16521108
]
clebert suconic edited comment on ARTEMIS-1928 at 6/23/18 2:21 PM:
-------------------------------------------------------------------
what is large, is a relative concept... in the case of ActiveMQ Artemis we take
the journal-buffer-size as the limiter. The default is 100K. (what we
considered large).
Add this parameter, right after journal-buffer-timeout for instance:
<journal-buffer-timeout>68000</journal-buffer-timeout>
<journal-buffer-size>200K</journal-buffer-size>
Regarding the type, I'm interested on how you are setting the body of your
messages, when converting messages we can only deal with these datatypes:
[https://github.com/apache/activemq-artemis/blob/2c8b6b4aee7b03f2872f04f1d8caaa9d85436216/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/AmqpCoreConverter.java#L111-L177]
I'm particularly interested on what type of body you had that we didn't know
how to convert.
But if you bypass conversion by increasing the journal-buffer-size you
shouldn't have an issue any longer. (we will fix the large messages for AMQP in
the next version.. but it should be ok for you now).
I suggest you open an user forum for tweaking your configurations now to bypass
large messages.
I will be away for 2 weeks in vacations. but there are plenty of people able to
help here.
was (Author: clebertsuconic):
what is large, is a relative concept... in the case of ActiveMQ Artemis we take
the journal-buffer-size as the limiter:
Add this parameter, right after journal-buffer-timeout for instance:
<journal-buffer-timeout>68000</journal-buffer-timeout>
<journal-buffer-size>200K</journal-buffer-size>
Regarding the type, I'm interested on how you are setting the body of your
messages, when converting messages we can only deal with these datatypes:
[https://github.com/apache/activemq-artemis/blob/2c8b6b4aee7b03f2872f04f1d8caaa9d85436216/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/AmqpCoreConverter.java#L111-L177]
I'm particularly interested on what type of body you had that we didn't know
how to convert.
But if you bypass conversion by increasing the journal-buffer-size you
shouldn't have an issue any longer. (we will fix the large messages for AMQP in
the next version.. but it should be ok for you now).
I suggest you open an user forum for tweaking your configurations now to bypass
large messages.
I will be away for 2 weeks in vacations. but there are plenty of people able to
help here.
> Message conversion on certain body types will cause NPE
> -------------------------------------------------------
>
> Key: ARTEMIS-1928
> URL: https://issues.apache.org/jira/browse/ARTEMIS-1928
> Project: ActiveMQ Artemis
> Issue Type: Bug
> Components: AMQP, Broker
> Affects Versions: 2.6.1
> Environment: * Broker Version: 2.6.1
> * Client: AMQPNetLite v2.1.2
> * Host OS: Linux node 4.9.0-6-amd64 #1 SMP Debian 4.9.88-1+deb9u1
> (2018-05-07) x86_64 GNU/Linux
> * Host Platform: AWS EC2
> * broker.xml from node1 attached as node1-broker.xml
> * broker.xml from node2 attached as node2-broker.xml
> Reporter: Simon Chalmers
> Priority: Critical
> Fix For: 2.7.0, 2.6.3
>
> Attachments: node1-broker.xml, node2-broker.xml
>
>
>
> Steps to produce, using a producing application (running AMQPNetLite)
> connecting to node1 of the cluster:
> * Create queue1, publish 199 messages to it
> * Create queue2, publish 1 message to it
> Running a consuming application (AMQPNetLite) connecting to node2 of the
> cluster:
> * On node1 of the cluster, queue1 & queue2 now have 0 messages in it
> * On node2 of the cluster, queue1 has 200 messages in it and queue2 has 2
> messages in it (i.e. an additional message in each queue, even though the
> consuming application is not publishing any messages).
> * The consuming application connected to node2 of the cluster does not
> consume any messages off either queue1 or queue2 from node2 (of the cluster).
> In artemis.log on node2 of the cluster, the following appears:
> {noformat}
> 2018-06-13 02:41:00,604 WARN [org.apache.activemq.artemis.core.server]
> AMQ222151: removing consumer which did not handle a message,
> consumer=ServerConsumerImpl [id=1, filter=null, binding=LocalQueueBinding
> [address=internal/queue.in/spatial-processing-service/440bfafe-76e5-4867-8b00-f1533d855549/0/update-terrain-request,
>
> queue=QueueImpl[name=internal/queue.in/spatial-processing-service/440bfafe-76e5-4867-8b00-f1533d855549/0/update-terrain-request,
> postOffice=PostOfficeImpl
> [server=ActiveMQServerImpl::serverUUID=f80e9286-6e9f-11e8-bd64-0204cf8299ac],
> temp=false]@50517445, filter=null,
> name=internal/queue.in/spatial-processing-service/440bfafe-76e5-4867-8b00-f1533d855549/0/update-terrain-request,
>
> clusterName=internal/queue.in/spatial-processing-service/440bfafe-76e5-4867-8b00-f1533d855549/0/update-terrain-requestf80e9286-6e9f-11e8-bd64-0204cf8299ac]],
>
> message=Reference[117]:NON-RELIABLE:LargeServerMessage[messageID=117,durable=false,userID=null,priority=0,
> timestamp=0,expiration=0, durable=false,
> address=internal/queue.in/spatial-processing-service/440bfafe-76e5-4867-8b00-f1533d855549/0/update-terrain-request,
> properties=TypedProperties[_AMQ_LARGE_SIZE=330649]]@2025498374:
> java.lang.IllegalStateException: Can't deliver message
> java.lang.NullPointerException
> at
> org.apache.activemq.artemis.protocol.amqp.broker.AMQPSessionCallback.sendMessage(AMQPSessionCallback.java:652)
> [artemis-amqp-protocol-2.6.1.jar:]
> at
> org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl.deliverStandardMessage(ServerConsumerImpl.java:1106)
> [artemis-server-2.6.1.jar:2.6.1]
> at
> org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl.proceedDeliver(ServerConsumerImpl.java:464)
> [artemis-server-2.6.1.jar:2.6.1]
> at
> org.apache.activemq.artemis.core.server.impl.QueueImpl.proceedDeliver(QueueImpl.java:2934)
> [artemis-server-2.6.1.jar:2.6.1]
> at
> org.apache.activemq.artemis.core.server.impl.QueueImpl.deliver(QueueImpl.java:2402)
> [artemis-server-2.6.1.jar:2.6.1]
> at
> org.apache.activemq.artemis.core.server.impl.QueueImpl.access$2000(QueueImpl.java:107)
> [artemis-server-2.6.1.jar:2.6.1]
> at
> org.apache.activemq.artemis.core.server.impl.QueueImpl$DeliverRunner.run(QueueImpl.java:3207)
> [artemis-server-2.6.1.jar:2.6.1]
> at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
> [artemis-commons-2.6.1.jar:2.6.1]
> at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
> [artemis-commons-2.6.1.jar:2.6.1]
> at
> org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:66)
> [artemis-commons-2.6.1.jar:2.6.1]
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> [rt.jar:1.8.0_171]
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> [rt.jar:1.8.0_171]
> at
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
> [artemis-commons-2.6.1.jar:2.6.1]
> Caused by: java.lang.NullPointerException
> at
> org.apache.activemq.artemis.core.message.impl.CoreMessage.internalWritableBuffer(CoreMessage.java:360)
> [artemis-core-client-2.6.1.jar:2.6.1]
> at
> org.apache.activemq.artemis.core.message.impl.CoreMessage.getBodyBuffer(CoreMessage.java:353)
> [artemis-core-client-2.6.1.jar:2.6.1]
> at
> org.apache.activemq.artemis.protocol.amqp.converter.CoreAmqpConverter.convertBody(CoreAmqpConverter.java:384)
> [artemis-amqp-protocol-2.6.1.jar:]
> at
> org.apache.activemq.artemis.protocol.amqp.converter.CoreAmqpConverter.fromCore(CoreAmqpConverter.java:126)
> [artemis-amqp-protocol-2.6.1.jar:]
> at
> org.apache.activemq.artemis.protocol.amqp.converter.CoreAmqpConverter.checkAMQP(CoreAmqpConverter.java:106)
> [artemis-amqp-protocol-2.6.1.jar:]
> at
> org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerSenderContext.deliverMessage(ProtonServerSenderContext.java:681)
> [artemis-amqp-protocol-2.6.1.jar:]
> at
> org.apache.activemq.artemis.protocol.amqp.broker.AMQPSessionCallback.sendMessage(AMQPSessionCallback.java:643)
> [artemis-amqp-protocol-2.6.1.jar:]
> ... 12 more
> {noformat}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)