OF 3.6.0a Locking Up

My server is being plagued by a rather odd issue and any help or pointers would be appreciated.

OpenFire Server

3.6.0a

Debian GNU/Linux 4.0

Linux 2.6.24-etchnhalf.1-amd64 #1 SMP Tue Sep 9 15:49:45 UTC 2008 x86_64 GNU/Linux

Database Server

Oracle 11g

RHEL 5.2 (Tikanga)

Linux 2.6.27.2 #2 SMP Mon Oct 20 10:52:31 CDT 2008 x86_64 GNU/Linux

Problem

The server seems to sporadically freeze about once or twice a week where it will not accept any connections at all. Viewing the raw xml streams between the client and server shows no response packets whatsoever from the server. However, the web admin is still running and I can maneuver around. This freeze requires a restart which brings it back into working order. It does not occur during peak hours and seems to be somewhat random. Below I’ve pasted the only error that openfire gives in regards to this. It will repeat until the server has been restarted.

Note that the database itself does not go down and is still serving connections to an apache server which also doesn’t go down during this period. Also note that there are no triggers whatsoever on the OF tablespace. This sql functions normally up until the freeze.

Error

2008.11.02 17:36:36 [org.jivesoftware.openfire.spi.PresenceManagerImpl.deleteOfflinePresenceFromDB( PresenceManagerImpl.java:210)]
java.sql.SQLException: ORA-04092: cannot COMMIT in a trigger

    at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:74)
    at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:131)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:204)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413)
    at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1034)
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194)
    at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.jav a:953)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:12 22)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatem ent.java:3387)
    at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java :3488)
    at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStateme ntWrapper.java:1086)
    at sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.ja va:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.logicalcobwebs.proxool.ProxyStatement.invoke(ProxyStatement.java:100)
    at org.logicalcobwebs.proxool.ProxyStatement.intercept(ProxyStatement.java:57)
    at oracle.jdbc.internal.OracleStatement$$EnhancerByProxool$$a9bcbd6f.execute(<gene rated>)
    at org.jivesoftware.database.ProfiledConnection$TimedPreparedStatement.execute(Pro filedConnection.java:754)
    at org.jivesoftware.openfire.spi.PresenceManagerImpl.deleteOfflinePresenceFromDB(P resenceManagerImpl.java:207)
    at org.jivesoftware.openfire.spi.PresenceManagerImpl.userAvailable(PresenceManager Impl.java:192)
    at org.jivesoftware.openfire.handler.PresenceUpdateHandler.process(PresenceUpdateH andler.java:134)
    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)
    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)