Openfire keeps dropping connections

We have openfire (latest) running on windows. It keeps randomly booting our users, no matter what client they are using. I am 99.% percent sure its not a timeout issue, it even happens to a perl bot that we have that doesn’t idle for more than 30 seconds. Here is what shows up in the openfire logs:

debug:

java.io.IOException: An existing connection was forcibly closed by the remote host

at sun.nio.ch.SocketDispatcher.read0(Native Method)

at sun.nio.ch.SocketDispatcher.read(Unknown Source)

at sun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source)

at sun.nio.ch.IOUtil.read(Unknown Source)

at sun.nio.ch.SocketChannelImpl.read(Unknown Source)

at org.apache.mina.transport.socket.nio.SocketIoProcessor.read(SocketIoProcessor.j ava:232)

at org.apache.mina.transport.socket.nio.SocketIoProcessor.process(SocketIoProcesso r.java:206)

at org.apache.mina.transport.socket.nio.SocketIoProcessor.access$500(SocketIoProce ssor.java:44)

at org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoProce ssor.java:506)

at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:43)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

2007.09.05 16:38:34

warn:

2007.09.05 16:37:25 Invalid presence show

java.lang.IllegalArgumentException: No enum const class org.xmpp.packet.Presence$Show.

at java.lang.Enum.valueOf(Unknown Source)

at org.xmpp.packet.Presence$Show.valueOf(Presence.java:377)

at org.xmpp.packet.Presence.getShow(Presence.java:136)

at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:216)

at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:153)

at org.jivesoftware.openfire.nio.ConnectionHandler.messageReceived(ConnectionHandl er.java:132)

at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived (AbstractIoFilterChain.java:703)

at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:362)

at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:54)

at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:800)

at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimplePr otocolDecoderOutput.java:62)

at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecF ilter.java:200)

at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:362)

at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:54)

at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:800)

at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java :266)

at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(Execut orFilter.java:326)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

These logs may not even be related to the issue, but its the closest error messages around the time the connections were dropped. Not all clients are dropped at the same time, either, and some don’t get dropped at all.

Hey aelix,

A java.io.IOException: An existing connection was forcibly closed by the remote host error means that the connection from the other end (i.e. the client) was lost and the server didn’t know about it. The server will add an entry to the debug.log if the server was the one that closed a session if it’s idle. Make sure that you have your debug log enabled. If you don’t see any entry in the debug.log saying Closing connection that has been idle then it is either the client that is losing its connection or there is something between the client and the server that is closing the connection (e.g. firewall).

Regards,

– Gato