Connection handler errors

Since moving to Openfire 3.5.x I have had a number of errors logged by the ConnectionHandler class regarding array index out of bounds exceptions. The two logged errors I received repeatedly are listed below.

2008.07.14 09:59:10 org.jivesoftware.openfire.nio.ConnectionHandler.exceptionCaught(ConnectionHandle r.java:110)

java.lang.ArrayIndexOutOfBoundsException at java.lang.System.arraycopy(Native Method) at com.jcraft.jzlib.ZStream.flush_pending(ZStream.java:170) at com.jcraft.jzlib.Deflate.deflate(Deflate.java:1527) at com.jcraft.jzlib.ZStream.deflate(ZStream.java:133) at org.apache.mina.filter.support.Zlib.deflate(Zlib.java:176) at org.apache.mina.filter.CompressionFilter.filterWrite(CompressionFilter.java:191 ) at org.apache.mina.common.support.AbstractIoFilterChain.callPreviousFilterWrite(Ab stractIoFilterChain.java:361) at org.apache.mina.common.support.AbstractIoFilterChain.access$1300(AbstractIoFilt erChain.java:53) at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.filterWrite(Ab stractIoFilterChain.java:659) at org.apache.mina.filter.executor.ExecutorFilter.filterWrite(ExecutorFilter.java: 255) at org.apache.mina.common.support.AbstractIoFilterChain.callPreviousFilterWrite(Ab stractIoFilterChain.java:361) at org.apache.mina.common.support.AbstractIoFilterChain.access$1300(AbstractIoFilt erChain.java:53) at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.filterWrite(Ab stractIoFilterChain.java:659) at org.apache.mina.filter.codec.ProtocolCodecFilter.filterWrite(ProtocolCodecFilte r.java:210) at org.apache.mina.common.support.AbstractIoFilterChain.callPreviousFilterWrite(Ab stractIoFilterChain.java:361) at org.apache.mina.common.support.AbstractIoFilterChain.access$1300(AbstractIoFilt erChain.java:53) at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.filterWrite(Ab stractIoFilterChain.java:659) at org.apache.mina.common.IoFilterAdapter.filterWrite(IoFilterAdapter.java:90)at org.jivesoftware.openfire.net.StalledSessionsFilter.filterWrite(StalledSessions Filter.java:49)

at org.apache.mina.common.support.AbstractIoFilterChain.callPreviousFilterWrite(Ab stractIoFilterChain.java:361) at org.apache.mina.common.support.AbstractIoFilterChain.access$1300(AbstractIoFilt erChain.java:53) at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.filterWrite(Ab stractIoFilterChain.java:659) at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.filterWrite(Abs tractIoFilterChain.java:587) at org.apache.mina.common.support.AbstractIoFilterChain.callPreviousFilterWrite(Ab stractIoFilterChain.java:361) at org.apache.mina.common.support.AbstractIoFilterChain.fireFilterWrite(AbstractIo FilterChain.java:355) at org.apache.mina.transport.socket.nio.SocketSessionImpl.write0(SocketSessionImpl .java:166) at org.apache.mina.common.support.BaseIoSession.write(BaseIoSession.java:177) at org.apache.mina.common.support.BaseIoSession.write(BaseIoSession.java:168)at org.jivesoftware.openfire.nio.NIOConnection.deliver(NIOConnection.java:223)at org.jivesoftware.openfire.session.LocalClientSession.deliver(LocalClientSession .java:781)at org.jivesoftware.openfire.session.LocalSession.process(LocalSession.java:262)at org.jivesoftware.openfire.spi.RoutingTableImpl.routePacket(RoutingTableImpl.jav a:235)at org.jivesoftware.openfire.net.SocketPacketWriteHandler.process(SocketPacketWrit eHandler.java:53)at org.jivesoftware.openfire.spi.PacketDelivererImpl.deliver(PacketDelivererImpl.j ava:48)at org.jivesoftware.openfire.spi.PresenceManagerImpl.probePresence(PresenceManager Impl.java:385)at org.jivesoftware.openfire.handler.PresenceUpdateHandler.initSession(PresenceUpd ateHandler.java:230)at org.jivesoftware.openfire.handler.PresenceUpdateHandler.process(PresenceUpdateH andler.java:128)at org.jivesoftware.openfire.handler.PresenceUpdateHandler.process(PresenceUpdateH andler.java:112)at org.jivesoftware.openfire.handler.PresenceUpdateHandler.process(PresenceUpdateH andler.java:176)at org.jivesoftware.openfire.PresenceRouter.handle(PresenceRouter.java:134)at org.jivesoftware.openfire.PresenceRouter.route(PresenceRouter.java:70)at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:76)< span class=“hilite”>at org.jivesoftware.openfire.net.StanzaHandler.processPresence(StanzaHandler.java: 329)at org.jivesoftware.openfire.net.ClientStanzaHandler.processPresence(ClientStanzaH andler.java:85)at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:253)at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:175)at org.jivesoftware.openfire.nio.ConnectionHandler.messageReceived(ConnectionHandl er.java:133)

at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived (AbstractIoFilterChain.java:570) at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299) at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53) at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648) at org.apache.mina.common.IoFilterAdapter.messageReceived(IoFilterAdapter.java:80) at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299) at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53) at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648) at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimplePr otocolDecoderOutput.java:58) at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecF ilter.java:185) at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299) at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53) at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648) at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java :239) at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(Execut orFilter.java:283) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java: 650) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51) at java.lang.Thread.run(Thread.java:595) 2008.07.14 09:59:10 org.jivesoftware.openfire.nio.ConnectionHandler.exceptionCaught(ConnectionHandle r.java:110)

java.lang.ArrayIndexOutOfBoundsException at java.lang.System.arraycopy(Native Method) at com.jcraft.jzlib.ZStream.flush_pending(ZStream.java:170) at com.jcraft.jzlib.Deflate.deflate(Deflate.java:1527) at com.jcraft.jzlib.ZStream.deflate(ZStream.java:133) at org.apache.mina.filter.support.Zlib.deflate(Zlib.java:176) at org.apache.mina.filter.CompressionFilter.filterWrite(CompressionFilter.java:191 ) at org.apache.mina.common.support.AbstractIoFilterChain.callPreviousFilterWrite(Ab stractIoFilterChain.java:361) at org.apache.mina.common.support.AbstractIoFilterChain.access$1300(AbstractIoFilt erChain.java:53) at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.filterWrite(Ab stractIoFilterChain.java:659) at org.apache.mina.filter.executor.ExecutorFilter.filterWrite(ExecutorFilter.java: 255) at org.apache.mina.common.support.AbstractIoFilterChain.callPreviousFilterWrite(Ab stractIoFilterChain.java:361) at org.apache.mina.common.support.AbstractIoFilterChain.access$1300(AbstractIoFilt erChain.java:53) at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.filterWrite(Ab stractIoFilterChain.java:659) at org.apache.mina.filter.codec.ProtocolCodecFilter.filterWrite(ProtocolCodecFilte r.java:210) at org.apache.mina.common.support.AbstractIoFilterChain.callPreviousFilterWrite(Ab stractIoFilterChain.java:361) at org.apache.mina.common.support.AbstractIoFilterChain.access$1300(AbstractIoFilt erChain.java:53) at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.filterWrite(Ab stractIoFilterChain.java:659) at org.apache.mina.common.IoFilterAdapter.filterWrite(IoFilterAdapter.java:90)at org.jivesoftware.openfire.net.StalledSessionsFilter.filterWrite(StalledSessions Filter.java:49)

at org.apache.mina.common.support.AbstractIoFilterChain.callPreviousFilterWrite(Ab stractIoFilterChain.java:361) at org.apache.mina.common.support.AbstractIoFilterChain.access$1300(AbstractIoFilt erChain.java:53) at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.filterWrite(Ab stractIoFilterChain.java:659) at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.filterWrite(Abs tractIoFilterChain.java:587) at org.apache.mina.common.support.AbstractIoFilterChain.callPreviousFilterWrite(Ab stractIoFilterChain.java:361) at org.apache.mina.common.support.AbstractIoFilterChain.fireFilterWrite(AbstractIo FilterChain.java:355) at org.apache.mina.transport.socket.nio.SocketSessionImpl.write0(SocketSessionImpl .java:166) at org.apache.mina.common.support.BaseIoSession.write(BaseIoSession.java:177) at org.apache.mina.common.support.BaseIoSession.write(BaseIoSession.java:168)at org.jivesoftware.openfire.nio.NIOConnection.deliver(NIOConnection.java:223)at org.jivesoftware.openfire.session.LocalClientSession.deliver(LocalClientSession .java:781)at org.jivesoftware.openfire.session.LocalSession.process(LocalSession.java:262)at org.jivesoftware.openfire.spi.RoutingTableImpl.routePacket(RoutingTableImpl.jav a:235)at org.jivesoftware.openfire.MessageRouter.route(MessageRouter.java:97)at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:72)< span class=“hilite”>at org.jivesoftware.openfire.pep.PEPService.sendNotification(PEPService.java:441)< span class=“hilite”>at org.jivesoftware.openfire.pep.PEPService.sendLastPublishedItems(PEPService.java :519)at org.jivesoftware.openfire.pep.IQPEPHandler$1.run(IQPEPHandler.java:136)

It seems these errors were tied to compression. Setting Server Settings>Compression Settings>Client Compression Policy to Not Available resolved the issue.