[ 
https://issues.apache.org/jira/browse/ARTEMIS-4217?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17733522#comment-17733522
 ] 

Justin Bertram edited comment on ARTEMIS-4217 at 6/16/23 2:53 PM:
------------------------------------------------------------------

[~jbertram], thanks for looking at this and sorry for the long delay...

It looks like it is hard to reproduce it. I'm currently not able to reproduce 
the problem on my local test machine. But I still see the problem on other 
systems:

In this case, the problem occurred with a "large message". Could a large 
message trigger some kind of conversion? Maybe during writing/reading from the 
storage (file system)? The payload of the message is a 1mb chunk of a zip file. 
The message also has some custom headers/properties which are visible in the 
log below. 

We only have AMQP consumers/producers on this system. I've also verified this 
in the admin console: 

!image-2023-06-16-15-59-25-689.png!!image-2023-06-16-15-59-25-721.png!

{noformat}
2023-06-16 15:44:48,301 WARN  [org.apache.activemq.artemis.core.server] 
AMQ222150: Sending message Reference[120978405]:NON-RELIABLE:LargeServerMessage 
[messageID=120978405,durable=false,userID=f5eb19e9-0c4b-11ee-8c25-f44d30e2ecf9,priority=4,
 timestamp=0,expiration=Mon Jun 19 15:44:46 CEST 2023, durable=false, 
address=MyQName, 
properties=TypedProperties[content-length=1000000,JMS_AMQP_ORIGINAL_ENCODING=6,content-version=2.0,AtmCommandTaskResultId=25160,
 
filename=MyBroker_2023-06-15_2243_12.0.0.6_Logisoft.7z,content-type=multipart/byteranges,x-version=7.9.45.349,AtmCommandTaskId=-1,_AMQ_LARGE_SIZE=1000000,extensions=1,
 
checksumrange=F4861070CFDFC33B7D77A74420AF25DF1FAFF4F57A01D75A1E0FB03047BF38C7,NATIVE_MESSAGE_ID=ID:AMQP_NO_PREFIX:MyQName_2023-06-16T15:44:46.8290577+02:00_97089137-6edd-49cd-a81a-0b40441f6be5,Issued=2023-06-16
 15:44:46.824 
+02:00,AtmJobId=15065,content-status=200,range=6000000-6999999,1773052136,process-id=Job_15065_MonitoringDataExchange_ssss_2023-06-16T15:38:58.0607859+02:00,atmid=CHE80000455,received-getrange=6000000-6999999,0]]@80507286
 to Dead Letter Address, but there is no Dead Letter Address configured for 
queue MyQName so dropping it
2023-06-16 15:44:48,338 WARN  
[org.apache.activemq.artemis.protocol.amqp.logger] AMQ111005: Failed to convert 
message. Sending it to Dead Letter Address. 
  
org.apache.activemq.artemis.protocol.amqp.converter.coreWrapper.ConversionException:
 java.nio.channels.AsynchronousCloseException
       at 
org.apache.activemq.artemis.protocol.amqp.converter.CoreAmqpConverter.fromCore(CoreAmqpConverter.java:318)
 ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]
       at 
org.apache.activemq.artemis.protocol.amqp.converter.CoreAmqpConverter.checkAMQP(CoreAmqpConverter.java:79)
 ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]
       at 
org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerSenderContext.executeDelivery(ProtonServerSenderContext.java:561)
 ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]
       at 
org.apache.activemq.artemis.core.server.impl.MessageReferenceImpl.run(MessageReferenceImpl.java:131)
 ~[artemis-server-2.28.0.jar:2.28.0]
       at 
io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
 ~[netty-common-4.1.86.Final.jar:4.1.86.Final]
       at 
io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
 ~[netty-common-4.1.86.Final.jar:4.1.86.Final]
       at 
io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
 ~[netty-common-4.1.86.Final.jar:4.1.86.Final]
       at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) 
~[netty-transport-4.1.86.Final.jar:4.1.86.Final]
       at 
io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
 ~[netty-common-4.1.86.Final.jar:4.1.86.Final]
       at 
io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) 
~[netty-common-4.1.86.Final.jar:4.1.86.Final]
       at 
org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
 ~[artemis-commons-2.28.0.jar:?]
   Caused by: java.lang.RuntimeException: 
java.nio.channels.AsynchronousCloseException
       at 
org.apache.activemq.artemis.core.persistence.impl.journal.LargeBody.getBodyBufferSize(LargeBody.java:293)
 ~[artemis-server-2.28.0.jar:2.28.0]
       at 
org.apache.activemq.artemis.core.persistence.impl.journal.LargeServerMessageImpl.getBodyBufferSize(LargeServerMessageImpl.java:263)
 ~[artemis-server-2.28.0.jar:2.28.0]
       at 
org.apache.activemq.artemis.protocol.amqp.converter.coreWrapper.CoreBytesMessageWrapper.getBodyLength(CoreBytesMessageWrapper.java:98)
 ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     
       at 
org.apache.activemq.artemis.protocol.amqp.converter.coreWrapper.CoreBytesMessageWrapper.getBinaryFromMessageBody(CoreBytesMessageWrapper.java:68)
 ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     
       at 
org.apache.activemq.artemis.protocol.amqp.converter.coreWrapper.CoreBytesMessageWrapper.createAMQPSection(CoreBytesMessageWrapper.java:78)
 ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     
       at 
org.apache.activemq.artemis.protocol.amqp.converter.CoreAmqpConverter.fromCore(CoreAmqpConverter.java:106)
 ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     
       ... 10 more 
   Caused by: java.nio.channels.AsynchronousCloseException
        at 
java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:202)
 ~[?:?]     
        at sun.nio.ch.FileChannelImpl.endBlocking(FileChannelImpl.java:177) 
~[?:?]     
        at sun.nio.ch.FileChannelImpl.size(FileChannelImpl.java:436) ~[?:?]     
        at 
org.apache.activemq.artemis.core.io.nio.NIOSequentialFile.size(NIOSequentialFile.java:339)
 ~[artemis-journal-2.28.0.jar:2.28.0]     
        at 
org.apache.activemq.artemis.core.persistence.impl.journal.LargeBody.getBodyBufferSize(LargeBody.java:285)
 ~[artemis-server-2.28.0.jar:2.28.0]     
        at 
org.apache.activemq.artemis.core.persistence.impl.journal.LargeServerMessageImpl.getBodyBufferSize(LargeServerMessageImpl.java:263)
 ~[artemis-server-2.28.0.jar:2.28.0]     
        at 
org.apache.activemq.artemis.protocol.amqp.converter.coreWrapper.CoreBytesMessageWrapper.getBodyLength(CoreBytesMessageWrapper.java:98)
 ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     
        at 
org.apache.activemq.artemis.protocol.amqp.converter.coreWrapper.CoreBytesMessageWrapper.getBinaryFromMessageBody(CoreBytesMessageWrapper.java:68)
 ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     
        at 
org.apache.activemq.artemis.protocol.amqp.converter.coreWrapper.CoreBytesMessageWrapper.createAMQPSection(CoreBytesMessageWrapper.java:78)
 ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     
        at 
org.apache.activemq.artemis.protocol.amqp.converter.CoreAmqpConverter.fromCore(CoreAmqpConverter.java:106)
 ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     
        ... 10 more{noformat}


was (Author: daves):
[~jbertram]  Thanks for looking at this and sorry for the long delay...

 

It looks like it is hard to reproduce it. I'm currently not able to reproduce 
the problem on my local test machine. But I still see the problem on other 
systems:

In this case, the problem occurred with a "large message". Could a large 
message trigger some kind of conversion? Maybe during writing/reading from the 
storage (file system)? The payload of the message is a 1mb chunk of a zip file. 
The message also has some custom headers/properties which are visible in the 
log below.

 

We only have AMQP consumers/producers on this system. I've also verified this 
in the admin console:

 

!image-2023-06-16-15-59-25-689.png!!image-2023-06-16-15-59-25-721.png!

 
 
{code:java}
2023-06-16 15:44:48,301 WARN  [org.apache.activemq.artemis.core.server] 
AMQ222150: Sending message Reference[120978405]:NON-RELIABLE:LargeServerMessage 
[messageID=120978405,durable=false,userID=f5eb19e9-0c4b-11ee-
8c25-f44d30e2ecf9,priority=4, timestamp=0,expiration=Mon Jun 19 15:44:46 CEST 
2023, durable=false, address=MyQName, 
properties=TypedProperties[content-length=1000000,JMS_AMQP_ORIGINAL_ENCODING=6,content-version=2.0,AtmCommandTaskResultId=25160,
 
filename=MyBroker_2023-06-15_2243_12.0.0.6_Logisoft.7z,content-type=multipart/byteranges,x-version=7.9.45.349,AtmCommandTaskId=-1,_AMQ_LARGE_SIZE=1000000,extensions=1,
 
checksumrange=F4861070CFDFC33B7D77A74420AF25DF1FAFF4F57A01D75A1E0FB03047BF38C7,NATIVE_MESSAGE_ID=ID:AMQP_NO_PREFIX:MyQName_2023-06-16T15:44:46.8290577+02:00_97089137-6edd-49cd-a81a-0b40441f6be5,Issued=2023-06-16
 15:44:46.824 
+02:00,AtmJobId=15065,content-status=200,range=6000000-6999999,1773052136,process-id=Job_15065_MonitoringDataExchange_ssss_2023-06-16T15:38:58.0607859+02:00,atmid=CHE80000455,received-getrange=6000000-6999999,0]]@80507286
 to Dead Letter Address, but there is no Dead Letter Address configured for 
queue MyQName so dropping it 2023-06-16 15:44:48,338 WARN  
[org.apache.activemq.artemis.protocol.amqp.logger] AMQ111005: Failed to convert 
message. Sending it to Dead Letter Address. 
org.apache.activemq.artemis.protocol.amqp.converter.coreWrapper.ConversionException:
 java.nio.channels.AsynchronousCloseException     at 
org.apache.activemq.artemis.protocol.amqp.converter.CoreAmqpConverter.fromCore(CoreAmqpConverter.java:318)
 ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     at 
org.apache.activemq.artemis.protocol.amqp.converter.CoreAmqpConverter.checkAMQP(CoreAmqpConverter.java:79)
 ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     at 
org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerSenderContext.executeDelivery(ProtonServerSenderContext.java:561)
 ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     at 
org.apache.activemq.artemis.core.server.impl.MessageReferenceImpl.run(MessageReferenceImpl.java:131)
 ~[artemis-server-2.28.0.jar:2.28.0]     at 
io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
 ~[netty-common-4.1.86.Final.jar:4.1.86.Final]     at 
io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
 ~[netty-common-4.1.86.Final.jar:4.1.86.Final]     at 
io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
 ~[netty-common-4.1.86.Final.jar:4.1.86.Final]     at 
io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) 
~[netty-transport-4.1.86.Final.jar:4.1.86.Final]     at 
io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
 ~[netty-common-4.1.86.Final.jar:4.1.86.Final]     at 
io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) 
~[netty-common-4.1.86.Final.jar:4.1.86.Final]     at 
org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
 ~[artemis-commons-2.28.0.jar:?] Caused by: java.lang.RuntimeException: 
java.nio.channels.AsynchronousCloseException     at 
org.apache.activemq.artemis.core.persistence.impl.journal.LargeBody.getBodyBufferSize(LargeBody.java:293)
 ~[artemis-server-2.28.0.jar:2.28.0]     at 
org.apache.activemq.artemis.core.persistence.impl.journal.LargeServerMessageImpl.getBodyBufferSize(LargeServerMessageImpl.java:263)
 ~[artemis-server-2.28.0.jar:2.28.0]     at 
org.apache.activemq.artemis.protocol.amqp.converter.coreWrapper.CoreBytesMessageWrapper.getBodyLength(CoreBytesMessageWrapper.java:98)
 ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     at 
org.apache.activemq.artemis.protocol.amqp.converter.coreWrapper.CoreBytesMessageWrapper.getBinaryFromMessageBody(CoreBytesMessageWrapper.java:68)
 ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     at 
org.apache.activemq.artemis.protocol.amqp.converter.coreWrapper.CoreBytesMessageWrapper.createAMQPSection(CoreBytesMessageWrapper.java:78)
 ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     at 
org.apache.activemq.artemis.protocol.amqp.converter.CoreAmqpConverter.fromCore(CoreAmqpConverter.java:106)
 ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     ... 10 more Caused by: 
java.nio.channels.AsynchronousCloseException     at 
java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:202)
 ~[?:?]     at sun.nio.ch.FileChannelImpl.endBlocking(FileChannelImpl.java:177) 
~[?:?]     at sun.nio.ch.FileChannelImpl.size(FileChannelImpl.java:436) ~[?:?]  
   at 
org.apache.activemq.artemis.core.io.nio.NIOSequentialFile.size(NIOSequentialFile.java:339)
 ~[artemis-journal-2.28.0.jar:2.28.0]     at 
org.apache.activemq.artemis.core.persistence.impl.journal.LargeBody.getBodyBufferSize(LargeBody.java:285)
 ~[artemis-server-2.28.0.jar:2.28.0]     at 
org.apache.activemq.artemis.core.persistence.impl.journal.LargeServerMessageImpl.getBodyBufferSize(LargeServerMessageImpl.java:263)
 ~[artemis-server-2.28.0.jar:2.28.0]     at 
org.apache.activemq.artemis.protocol.amqp.converter.coreWrapper.CoreBytesMessageWrapper.getBodyLength(CoreBytesMessageWrapper.java:98)
 ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     at 
org.apache.activemq.artemis.protocol.amqp.converter.coreWrapper.CoreBytesMessageWrapper.getBinaryFromMessageBody(CoreBytesMessageWrapper.java:68)
 ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     at 
org.apache.activemq.artemis.protocol.amqp.converter.coreWrapper.CoreBytesMessageWrapper.createAMQPSection(CoreBytesMessageWrapper.java:78)
 ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     at 
org.apache.activemq.artemis.protocol.amqp.converter.CoreAmqpConverter.fromCore(CoreAmqpConverter.java:106)
 ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     ... 10 more{code}
 

> AMQ111005: Failed to convert message. Sending it to Dead Letter Address.
> ------------------------------------------------------------------------
>
>                 Key: ARTEMIS-4217
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-4217
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: AMQP
>    Affects Versions: 2.28.0
>         Environment: Windows Server 2022 21H2
> openjdk 19.0.1 2022-10-18
> OpenJDK Runtime Environment (build 19.0.1+10-21)
> OpenJDK 64-Bit Server VM (build 19.0.1+10-21, mixed mode, sharing)
>            Reporter: daves
>            Priority: Major
>         Attachments: ArtemisConvertError.zip, 
> image-2023-06-16-15-59-25-689.png, image-2023-06-16-15-59-25-721.png
>
>
> Some of the AMQP messages sent by my client never arrive at the consumer. In 
> the Artemis log I found the following exception:
> {noformat}
> 2023-03-23 18:06:58,084 WARN  
> [org.apache.activemq.artemis.protocol.amqp.logger] AMQ111005: Failed to 
> convert message. Sending it to Dead Letter Address. 
> org.apache.activemq.artemis.protocol.amqp.converter.coreWrapper.ConversionException:
>  java.nio.channels.ClosedChannelException
>      at 
> org.apache.activemq.artemis.protocol.amqp.converter.CoreAmqpConverter.fromCore(CoreAmqpConverter.java:318)
>  ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]
>      at 
> org.apache.activemq.artemis.protocol.amqp.converter.CoreAmqpConverter.checkAMQP(CoreAmqpConverter.java:79)
>  ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     
>      at 
> org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerSenderContext.executeDelivery(ProtonServerSenderContext.java:561)
>  ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     
>      at 
> org.apache.activemq.artemis.core.server.impl.MessageReferenceImpl.run(MessageReferenceImpl.java:131)
>  ~[artemis-server-2.28.0.jar:2.28.0]     
>      at 
> io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
>  ~[netty-common-4.1.86.Final.jar:4.1.86.Final]     
>      at 
> io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
>  ~[netty-common-4.1.86.Final.jar:4.1.86.Final]     
>      at 
> io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
>  ~[netty-common-4.1.86.Final.jar:4.1.86.Final]     
>      at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) 
> ~[netty-transport-4.1.86.Final.jar:4.1.86.Final]     
>      at 
> io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
>  ~[netty-common-4.1.86.Final.jar:4.1.86.Final]     
>      at 
> io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) 
> ~[netty-common-4.1.86.Final.jar:4.1.86.Final]     
>      at 
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
>  ~[artemis-commons-2.28.0.jar:?] Caused by: java.lang.RuntimeException: 
> java.nio.channels.ClosedChannelException     
>      at 
> org.apache.activemq.artemis.core.persistence.impl.journal.LargeBody.getBodyBufferSize(LargeBody.java:293)
>  ~[artemis-server-2.28.0.jar:2.28.0]     
>      at 
> org.apache.activemq.artemis.core.persistence.impl.journal.LargeServerMessageImpl.getBodyBufferSize(LargeServerMessageImpl.java:263)
>  ~[artemis-server-2.28.0.jar:2.28.0]     
>      at 
> org.apache.activemq.artemis.protocol.amqp.converter.coreWrapper.CoreBytesMessageWrapper.getBodyLength(CoreBytesMessageWrapper.java:98)
>  ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     
>      at 
> org.apache.activemq.artemis.protocol.amqp.converter.coreWrapper.CoreBytesMessageWrapper.getBinaryFromMessageBody(CoreBytesMessageWrapper.java:68)
>  ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     
>      at 
> org.apache.activemq.artemis.protocol.amqp.converter.coreWrapper.CoreBytesMessageWrapper.createAMQPSection(CoreBytesMessageWrapper.java:78)
>  ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     
>      at 
> org.apache.activemq.artemis.protocol.amqp.converter.CoreAmqpConverter.fromCore(CoreAmqpConverter.java:106)
>  ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     
>      ... 10 more 
> Caused by: java.nio.channels.ClosedChannelException     
>      at sun.nio.ch.FileChannelImpl.ensureOpen(FileChannelImpl.java:165) 
> ~[?:?]     
>      at sun.nio.ch.FileChannelImpl.size(FileChannelImpl.java:416) ~[?:?]     
>      at 
> org.apache.activemq.artemis.core.io.nio.NIOSequentialFile.size(NIOSequentialFile.java:339)
>  ~[artemis-journal-2.28.0.jar:2.28.0]     
>      at 
> org.apache.activemq.artemis.core.persistence.impl.journal.LargeBody.getBodyBufferSize(LargeBody.java:285)
>  ~[artemis-server-2.28.0.jar:2.28.0]     
>      at 
> org.apache.activemq.artemis.core.persistence.impl.journal.LargeServerMessageImpl.getBodyBufferSize(LargeServerMessageImpl.java:263)
>  ~[artemis-server-2.28.0.jar:2.28.0]     
>      at 
> org.apache.activemq.artemis.protocol.amqp.converter.coreWrapper.CoreBytesMessageWrapper.getBodyLength(CoreBytesMessageWrapper.java:98)
>  ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     
>      at 
> org.apache.activemq.artemis.protocol.amqp.converter.coreWrapper.CoreBytesMessageWrapper.getBinaryFromMessageBody(CoreBytesMessageWrapper.java:68)
>  ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     
>      at 
> org.apache.activemq.artemis.protocol.amqp.converter.coreWrapper.CoreBytesMessageWrapper.createAMQPSection(CoreBytesMessageWrapper.java:78)
>  ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]     
>      at 
> org.apache.activemq.artemis.protocol.amqp.converter.CoreAmqpConverter.fromCore(CoreAmqpConverter.java:106)
>  ~[artemis-amqp-protocol-2.28.0.jar:2.28.0]
>      ... 10 more{noformat}
> I tried to reproduce the error with trace log level enabled, but the problem 
> never occurs with trace enabled (same message payload).  Maybe it is a timing 
> issue which not occurs when Artemis processes messages much slower due to 
> additional tracing...?



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to