org.xmlpull.v1.XmlPullParserException:Is this a concurrency issue with Mina?

Hello, I am currently using openfire-4.1.3 and encountered an XML parsing issue that caused the server and client to disconnect. The simplified error message is as follows(The actual XML message, after formatting, exceeds 2000 lines.), It appears that two XML messages from the client got mixed up, where a portion of the second message with uid-aa7a48d8-0000000a was inserted into the first message with uid-aa7a48d8-00000009, resulting in XML formatting issues. I would like to know if openfire-4.1.3 properly handles multithreading issues when the client sends messages concurrently.

2023.07.17 10:43:49 org.jivesoftware.openfire.nio.ConnectionHandler - Closing connection due to error while processing message:
<iq id='uid-aa7a48d8-00000009' type='set' from='agent#81b25226-2c91-48b1-9b71-f5e4cd2d5703@38.66.33.226/SuperredAgent'
    xmlns='jabber:client'>
    <audit
        xmlns='com:superred:audit'>
        <guid>81B25226-2C91-48B1-9B71-F5E4CD2D5703</guid>
        <datalist>
            <data>
                <time>2023-7-17 09:18:57</time>
                <program>lucene</program>
                <target>xxx.doc</target>
                <eventUser>User</eventUser>
                <result>S</result>
                <level>6</level>
                <event>a
                </even
                <iq id='uid-aa7a48d8-0000000a' type='get' from='agent#81b25226-2c91-48b1-9b71-f5e4cd2d5703@38.66.33.226/SuperredAgent'
                    xmlns='jabber:client'>
                    <reg
                        xmlns='com:superred:agent:register'>
                        <guid>81B25226-2C91-48B1-9B71-F5E4CD2D5703</guid>
                    </reg>
                </iq>t>
                <behaviour>NORMAL</behaviour>
                <audit>lucene</audit>
            </data>
        </datalist>
    </audit>
</iq>
org.xmlpull.v1.XmlPullParserException: end tag name </even> must match start tag name <event> from line 1 (position: TEXT seen ...</level><event>a</even<... @1:56497) 
	at org.xmlpull.mxp1.MXParser.parseEndTag(MXParser.java:1689)
	at org.jivesoftware.openfire.net.MXParser.nextImpl(MXParser.java:113)
	at org.xmlpull.mxp1.MXParser.nextToken(MXParser.java:1100)
	at org.dom4j.io.XMPPPacketReader.parseDocument(XMPPPacketReader.java:316)
	at org.dom4j.io.XMPPPacketReader.read(XMPPPacketReader.java:153)
	at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:162)
	at org.jivesoftware.openfire.nio.ConnectionHandler.messageReceived(ConnectionHandler.java:181)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:690)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:47)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:765)
	at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:109)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:47)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:765)
	at org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutputImpl.flush(ProtocolCodecFilter.java:407)
	at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:236)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:47)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:765)
	at org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:74)
	at org.apache.mina.core.session.IoEvent.run(IoEvent.java:63)
	at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTask(OrderedThreadPoolExecutor.java:769)
	at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTasks(OrderedThreadPoolExecutor.java:761)
	at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.run(OrderedThreadPoolExecutor.java:703)
	at java.lang.Thread.run(Unknown Source)
1 Like

Can you reproduce this problem on a recent version of Openfire? Openfire 4.1.3 has been released 2337 days ago. As a community, there’s little incentive to support such an old release. When desired, you can ask for commercial support with one of the companies listed in our directory of service providers.

As an aside: we’re working on replacing Apache MINA with Netty in Openfire 4.8.0. More details in our issue tracker: [OF-2559] - Ignite Realtime Jira

Alright, I will try to reproduce this problem on version 4.7.5