Skip navigation
This discussion is archived
4822 Views 2 Replies Latest reply: May 3, 2007 11:00 AM by Andrew Laurence RSS
Calculating status... 1 posts since
Mar 2, 2007
Currently Being Moderated

Mar 2, 2007 9:38 AM

WildFire (any version) and mysql jdbc timeouts

Hi all, I''ve setup a wildfire server but while we''re testing, it doesnt have any traffic,

SO mysql connections in ConnectionPool timeout (yes, I''ve tried to tune /etc/my.cnf:wait_timeout=xxx).

The question is after "wait_timeout" in mysql, the server closes the connections, and WildFire doesn''t realize it... so whenever DbConnectionManager/Pool is asked for a Connection, the connection will be likely closed, so the SQL query WILL_NOT succeed, even if the database is all right


Ive tried with the autoReconnect=true parameter, but it only improves the behaviour a little bit (you get a closed Connection every two ''getConnection''''s)


I''ve done a quick-hack to solve this behaviour in WildFire 3.2.2 (attached patch), but its a quick hack, the best would be someone to implement "database.defaultProvider.checkOpenConnection" because is marked "TODO" in


These are some interesting links for anyone affected by the same issue:

(about java.sql.Connection.isClosed() )

(about mysql configuration variables, ie. wait_timeout and autoReconnect)

(The wildfire todo properties)

(The same issue but in JBoss/FDS/Hibernate, and how it was solved. Hint: copy the solution from JBoss to wildfire )



It would be very nice to have this fixed in next release


thanks to all, and best regards


Elias Baixas


============== Tha dirt-hack patch =================

diff -c3 src/wildfire_src_3_2_2/wildfire_src/src/java/org/jivesoftware/database/DbConnec workspace/wildfire_3_2_2/src/java/org/jivesoftware/database/DbConnectionManager .java

      • src/wildfire_src_3_2_2/wildfire_src/src/java/org/jivesoftware/database/DbConnect     2007-02-20 00:52:13.000000000 +0100

--- workspace/wildfire_3_2_2/src/java/org/jivesoftware/database/DbConnectionManager .java        2007-03-02 18:14:31.000000000 +0100


      • 90,95 ****

--- 90,108 -



          Connection con = connectionProvider.getConnection();

+         boolean haveConnection=false;

+         int maxTries = 10;

+         while(!haveConnection && maxTries>0){

+            try{

+               PreparedStatement s =con.prepareStatement("SELECT 1");

+               s.execute();

+               haveConnection = true;

+            }catch(SQLException ex){

+               maxTries--;

+               con.close();

+               con = connectionProvider.getConnection();

+            }

+         }


          if (con == null) {

              Log.error("WARNING: ConnectionManager.getConnection() " +

More Like This

  • Retrieving data ...

Bookmarked By (0)