Liviu Citu created ARTEMIS-4462:
-----------------------------------
Summary: 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
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.
See email from ActiveMQ Community in attachment for more details.
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_
I have found an old discussion from ActiveMQ Community but it was focued 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 of the
application
--
This message was sent by Atlassian Jira
(v8.20.10#820010)