Openfire - an XMPP server,
https://www.igniterealtime.org/projects/openfire/index.jsp - makes heavy
use of Apache MINA for it's I/O.

One of the things it uses is the CompressionFilter - if clients enable the
Compression XMPP option.

We've recently updated to a newer version of MINA, and with no other code
changes found that enabling compression (in XMPP clients) fails. I've
narrowed it down to changes between MINA 2.0.13 (where it works) and 2.0.14
through to 2.1.0 (where it doesn't) - with Openfire throwing the following
stack trace:

java.nio.InvalidMarkException: null
at java.nio.Buffer.reset(Buffer.java:306) ~[?:1.8.0_162]
at
org.apache.mina.core.buffer.AbstractIoBuffer.reset(AbstractIoBuffer.java:424)
~[mina-core-2.0.14.jar:?]
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.writeBuffer(AbstractPollingIoProcessor.java:940)
~[mina-core-2.0.14.jar:?]
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.flushNow(AbstractPollingIoProcessor.java:840)
~[mina-core-2.0.14.jar:?]
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.flush(AbstractPollingIoProcessor.java:767)
~[mina-core-2.0.14.jar:?]
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.access$700(AbstractPollingIoProcessor.java:68)
~[mina-core-2.0.14.jar:?]
at
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1125)
~[mina-core-2.0.14.jar:?]
at
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
~[mina-core-2.0.14.jar:?]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
~[?:1.8.0_162]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
~[?:1.8.0_162]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_162]

Narrowing down even further the commit at
https://gitbox.apache.org/repos/asf?p=mina.git;a=commit;h=44b58469f84ce991074cdc187b1c1f23b94cf445
seems
to be the culprit.

At this point, I'm drawing a blank.

It's possible Openfire is using the CompressionFilter wrongly, which was
being masked until the above commit.

It's possible the above commit doesn't do what was intended, but I don't
pretend to understand what it is/should be doing.

It's possible I've got the wrong end of the stick, and it's something else
between MINA 2.0.13 and 2.0.14 that changed that is causing the problem.

But at this point, I don't know where to start, so would appreciate any
pointers!

Thanks,

Greg

Reply via email to