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)

Reply via email to