[
https://issues.apache.org/jira/browse/ARTEMIS-4462?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Timothy A. Bish updated ARTEMIS-4462:
-------------------------------------
Description:
When a text message non-UTF-8 (ISO-8859-15) containing special characters is
sent from ActiveMQ CPP client to Artemis, an exception
"java.io.UTFDataFormatException" is seen in Artemis server log.
Although the exception is thrown as a warning, the message gets rejected by the
server.
Below the Artemis server log:
_2023-09-29 11:34:32,736 WARN
[org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection] Errors
occurred during the buffering operation_
_java.io.UTFDataFormatException: null_
_at
org.apache.activemq.util.MarshallingSupport.convertUTF8WithBuf(MarshallingSupport.java:386)
~[activemq-client-5.17.2.jar:5.17.2]_
_at
org.apache.activemq.util.MarshallingSupport.readUTF8(MarshallingSupport.java:358)
~[activemq-client-5.17.2.jar:5.17.2]_
_at
org.apache.activemq.artemis.core.protocol.openwire.OpenWireMessageConverter.writeTextType(OpenWireMessageConverter.java:233)
~[artemis-openwire-protocol-2.30.0.jar:2.30.0]_
_at
org.apache.activemq.artemis.core.protocol.openwire.OpenWireMessageConverter.inbound(OpenWireMessageConverter.java:128)
~[artemis-openwire-protocol-2.30.0.jar:2.30.0]_
_at
org.apache.activemq.artemis.core.protocol.openwire.amq.AMQSession.send(AMQSession.java:376)
~[artemis-openwire-protocol-2.30.0.jar:2.30.0]_
_at
org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection$CommandProcessor.processMessage(OpenWireConnection.java:1671)
~[artemis-openwire-protocol-2.30.0.jar:2.30.0]_
_at
org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:769)
~[activemq-client-5.17.2.jar:5.17.2]_
_at
org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection.act(OpenWireConnection.java:369)
~[artemis-openwire-protocol-2.30.0.jar:2.30.0]_
_at
org.apache.activemq.artemis.utils.actors.ThresholdActor.doTask(ThresholdActor.java:68)
~[artemis-commons-2.30.0.jar:?]_
_at
org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:68)
~[artemis-commons-2.30.0.jar:?]_
_at
org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:57)
~[artemis-commons-2.30.0.jar:?]_
_at
org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:32)
~[artemis-commons-2.30.0.jar:?]_
_at
org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:68)
~[artemis-commons-2.30.0.jar:?]_
_at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[?:?]_
_at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[?:?]_
_at
org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
[artemis-commons-2.30.0.jar:?]_
_2023-09-29 11:34:32,753 WARN
[org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection] Errors
occurred during the buffering operation_
_org.apache.activemq.artemis.api.core.ActiveMQException: null_
_at
org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection$CommandProcessor.processMessage(OpenWireConnection.java:1674)
~[artemis-openwire-protocol-2.30.0.jar:2.30.0]_
_at
org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:769)
~[activemq-client-5.17.2.jar:5.17.2]_
_at
org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection.act(OpenWireConnection.java:369)
~[artemis-openwire-protocol-2.30.0.jar:2.30.0]_
_at
org.apache.activemq.artemis.utils.actors.ThresholdActor.doTask(ThresholdActor.java:68)
~[artemis-commons-2.30.0.jar:?]_
_at
org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:68)
~[artemis-commons-2.30.0.jar:?]_
_at
org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:57)
~[artemis-commons-2.30.0.jar:?]_
_at
org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:32)
~[artemis-commons-2.30.0.jar:?]_
_at
org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:68)
~[artemis-commons-2.30.0.jar:?]_
_at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[?:?]_
_at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[?:?]_
_at
org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
[artemis-commons-2.30.0.jar:?]_
_2023-09-29 11:34:32,755 WARN
[org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection] Errors
occurred during the buffering operation_
_java.io.UTFDataFormatException: null_
Just create a small test program using ActiveMQ CPP and send a message to
Artemis containing a french or german specific character.
I have found an old discussion from ActiveMQ Community but it was focused on
ActiveMQ CPP rather on Artemis.
[https://lists.apache.org/thread/vywv1gk32mkhvj7sghnvlf7ng5zb1obp]
This is a regression compared with ActiveMQ Classic which does not have this
issue.
Does Artemis support non-UTF-8 encoding? Do we need now to encode all messages
to UTF-8 before sending them to the server? Similarly to decode them upon
receiving?
This will cause some problems on our end because:
* we have many clients already using the ActiveMQ classic and migrating them
to Artemis will cause issues when migrating KahaDB to Artemis because all the
messages have to be encoded to UTF-8 otherwise they will not work in Artemis
* encoding/decoding every message will impact the overall performance. We have
applications handling thousands of messages every day and conversion of these
messages will increase the time spent during communication with JMS broker
was:
When a text message non-UTF-8 (ISO-8859-15) containing special characters is
sent from ActiveMQ CPP client to Artemis, an exception
"java.io.UTFDataFormatException" is seen in Artemis server log.
Although the exception is thrown as a warning, the message gets rejected by the
server.
Below the Artemis server log:
_2023-09-29 11:34:32,736 WARN
[org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection] Errors
occurred during the buffering operation_
_java.io.UTFDataFormatException: null_
_at
org.apache.activemq.util.MarshallingSupport.convertUTF8WithBuf(MarshallingSupport.java:386)
~[activemq-client-5.17.2.jar:5.17.2]_
_at
org.apache.activemq.util.MarshallingSupport.readUTF8(MarshallingSupport.java:358)
~[activemq-client-5.17.2.jar:5.17.2]_
_at
org.apache.activemq.artemis.core.protocol.openwire.OpenWireMessageConverter.writeTextType(OpenWireMessageConverter.java:233)
~[artemis-openwire-protocol-2.30.0.jar:2.30.0]_
_at
org.apache.activemq.artemis.core.protocol.openwire.OpenWireMessageConverter.inbound(OpenWireMessageConverter.java:128)
~[artemis-openwire-protocol-2.30.0.jar:2.30.0]_
_at
org.apache.activemq.artemis.core.protocol.openwire.amq.AMQSession.send(AMQSession.java:376)
~[artemis-openwire-protocol-2.30.0.jar:2.30.0]_
_at
org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection$CommandProcessor.processMessage(OpenWireConnection.java:1671)
~[artemis-openwire-protocol-2.30.0.jar:2.30.0]_
_at
org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:769)
~[activemq-client-5.17.2.jar:5.17.2]_
_at
org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection.act(OpenWireConnection.java:369)
~[artemis-openwire-protocol-2.30.0.jar:2.30.0]_
_at
org.apache.activemq.artemis.utils.actors.ThresholdActor.doTask(ThresholdActor.java:68)
~[artemis-commons-2.30.0.jar:?]_
_at
org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:68)
~[artemis-commons-2.30.0.jar:?]_
_at
org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:57)
~[artemis-commons-2.30.0.jar:?]_
_at
org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:32)
~[artemis-commons-2.30.0.jar:?]_
_at
org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:68)
~[artemis-commons-2.30.0.jar:?]_
_at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[?:?]_
_at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[?:?]_
_at
org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
[artemis-commons-2.30.0.jar:?]_
_2023-09-29 11:34:32,753 WARN
[org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection] Errors
occurred during the buffering operation_
_org.apache.activemq.artemis.api.core.ActiveMQException: null_
_at
org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection$CommandProcessor.processMessage(OpenWireConnection.java:1674)
~[artemis-openwire-protocol-2.30.0.jar:2.30.0]_
_at
org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:769)
~[activemq-client-5.17.2.jar:5.17.2]_
_at
org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection.act(OpenWireConnection.java:369)
~[artemis-openwire-protocol-2.30.0.jar:2.30.0]_
_at
org.apache.activemq.artemis.utils.actors.ThresholdActor.doTask(ThresholdActor.java:68)
~[artemis-commons-2.30.0.jar:?]_
_at
org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:68)
~[artemis-commons-2.30.0.jar:?]_
_at
org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:57)
~[artemis-commons-2.30.0.jar:?]_
_at
org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:32)
~[artemis-commons-2.30.0.jar:?]_
_at
org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:68)
~[artemis-commons-2.30.0.jar:?]_
_at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[?:?]_
_at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[?:?]_
_at
org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
[artemis-commons-2.30.0.jar:?]_
_2023-09-29 11:34:32,755 WARN
[org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection] Errors
occurred during the buffering operation_
_java.io.UTFDataFormatException: null_
Just create a small test program using ActiveMQ CPP and send a message to
Artemis containing a french or german specific character.
I have found an old discussion from ActiveMQ Community but it was focused on
ActiveMQ CPP rather on Artemis.
[https://lists.apache.org/thread/vywv1gk32mkhvj7sghnvlf7ng5zb1obp]
This is a regression compared with ActiveMQ Classic which does not have this
issue.
Does Artemis support non-UTF-8 encoding? Do we need now to encode all messages
to UTF-8 before sending them to the server? Similarly to decode them upon
receiving?
This will cause some problems on our end because:
* we have many clients already using the ActiveMQ classic and migrating them
to Artemis will cause issues when migrating KahaDB to Artemis because all the
messages have to be encoded to UTF-8 otherwise they will not work in Artemis
* encoding/decoding every message will impact the overall performance. We have
applications handling thousands of messages every day and conversion of these
messages will increase the time spent during communication with JMS broker
> Non-UTF-8 messages containing special characters are not supported
> ------------------------------------------------------------------
>
> Key: ARTEMIS-4462
> URL: https://issues.apache.org/jira/browse/ARTEMIS-4462
> Project: ActiveMQ Artemis
> Issue Type: Bug
> Affects Versions: 2.30.0
> Reporter: Liviu Citu
> Priority: Major
>
> When a text message non-UTF-8 (ISO-8859-15) containing special characters is
> sent from ActiveMQ CPP client to Artemis, an exception
> "java.io.UTFDataFormatException" is seen in Artemis server log.
> Although the exception is thrown as a warning, the message gets rejected by
> the server.
> Below the Artemis server log:
> _2023-09-29 11:34:32,736 WARN
> [org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection]
> Errors occurred during the buffering operation_
>
> _java.io.UTFDataFormatException: null_
> _at
> org.apache.activemq.util.MarshallingSupport.convertUTF8WithBuf(MarshallingSupport.java:386)
> ~[activemq-client-5.17.2.jar:5.17.2]_
> _at
> org.apache.activemq.util.MarshallingSupport.readUTF8(MarshallingSupport.java:358)
> ~[activemq-client-5.17.2.jar:5.17.2]_
> _at
> org.apache.activemq.artemis.core.protocol.openwire.OpenWireMessageConverter.writeTextType(OpenWireMessageConverter.java:233)
> ~[artemis-openwire-protocol-2.30.0.jar:2.30.0]_
> _at
> org.apache.activemq.artemis.core.protocol.openwire.OpenWireMessageConverter.inbound(OpenWireMessageConverter.java:128)
> ~[artemis-openwire-protocol-2.30.0.jar:2.30.0]_
> _at
> org.apache.activemq.artemis.core.protocol.openwire.amq.AMQSession.send(AMQSession.java:376)
> ~[artemis-openwire-protocol-2.30.0.jar:2.30.0]_
> _at
> org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection$CommandProcessor.processMessage(OpenWireConnection.java:1671)
> ~[artemis-openwire-protocol-2.30.0.jar:2.30.0]_
> _at
> org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:769)
> ~[activemq-client-5.17.2.jar:5.17.2]_
> _at
> org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection.act(OpenWireConnection.java:369)
> ~[artemis-openwire-protocol-2.30.0.jar:2.30.0]_
> _at
> org.apache.activemq.artemis.utils.actors.ThresholdActor.doTask(ThresholdActor.java:68)
> ~[artemis-commons-2.30.0.jar:?]_
> _at
> org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:68)
> ~[artemis-commons-2.30.0.jar:?]_
> _at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:57)
> ~[artemis-commons-2.30.0.jar:?]_
> _at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:32)
> ~[artemis-commons-2.30.0.jar:?]_
> _at
> org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:68)
> ~[artemis-commons-2.30.0.jar:?]_
> _at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
> [?:?]_
> _at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
> [?:?]_
> _at
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
> [artemis-commons-2.30.0.jar:?]_
> _2023-09-29 11:34:32,753 WARN
> [org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection]
> Errors occurred during the buffering operation_
> _org.apache.activemq.artemis.api.core.ActiveMQException: null_
> _at
> org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection$CommandProcessor.processMessage(OpenWireConnection.java:1674)
> ~[artemis-openwire-protocol-2.30.0.jar:2.30.0]_
> _at
> org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:769)
> ~[activemq-client-5.17.2.jar:5.17.2]_
> _at
> org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection.act(OpenWireConnection.java:369)
> ~[artemis-openwire-protocol-2.30.0.jar:2.30.0]_
> _at
> org.apache.activemq.artemis.utils.actors.ThresholdActor.doTask(ThresholdActor.java:68)
> ~[artemis-commons-2.30.0.jar:?]_
> _at
> org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:68)
> ~[artemis-commons-2.30.0.jar:?]_
> _at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:57)
> ~[artemis-commons-2.30.0.jar:?]_
> _at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:32)
> ~[artemis-commons-2.30.0.jar:?]_
> _at
> org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:68)
> ~[artemis-commons-2.30.0.jar:?]_
> _at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
> [?:?]_
> _at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
> [?:?]_
> _at
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
> [artemis-commons-2.30.0.jar:?]_
> _2023-09-29 11:34:32,755 WARN
> [org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection]
> Errors occurred during the buffering operation_
> _java.io.UTFDataFormatException: null_
>
> Just create a small test program using ActiveMQ CPP and send a message to
> Artemis containing a french or german specific character.
>
> I have found an old discussion from ActiveMQ Community but it was focused on
> ActiveMQ CPP rather on Artemis.
> [https://lists.apache.org/thread/vywv1gk32mkhvj7sghnvlf7ng5zb1obp]
>
> This is a regression compared with ActiveMQ Classic which does not have this
> issue.
> Does Artemis support non-UTF-8 encoding? Do we need now to encode all
> messages to UTF-8 before sending them to the server? Similarly to decode them
> upon receiving?
> This will cause some problems on our end because:
> * we have many clients already using the ActiveMQ classic and migrating them
> to Artemis will cause issues when migrating KahaDB to Artemis because all the
> messages have to be encoded to UTF-8 otherwise they will not work in Artemis
> * encoding/decoding every message will impact the overall performance. We
> have applications handling thousands of messages every day and conversion of
> these messages will increase the time spent during communication with JMS
> broker
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)