# HG changeset patch # User Tom Gottfried # Date 1417114555 -3600 # Node ID 7dd39219bd68f9311c7054c02ca1b90a7367210e # Parent 3cfa0af6fa2a2c926cb51cb6aa5fc22ec0af3a80 Connection pool: do not wait forever for new connections and be more verbose. diff -r 3cfa0af6fa2a -r 7dd39219bd68 backend/src/main/java/org/dive4elements/river/backend/utils/DBCPConnectionProvider.java --- a/backend/src/main/java/org/dive4elements/river/backend/utils/DBCPConnectionProvider.java Thu Nov 27 19:14:05 2014 +0100 +++ b/backend/src/main/java/org/dive4elements/river/backend/utils/DBCPConnectionProvider.java Thu Nov 27 19:55:55 2014 +0100 @@ -215,6 +215,7 @@ String validationQuery = props.getProperty("validationQuery"); if (validationQuery != null) { ds.setValidationQuery(validationQuery); + ds.setMaxWait(1000); //TODO: make it configurable } // The BasicDataSource has lazy initialization // borrowing a connection will start the DataSource @@ -240,10 +241,20 @@ } public Connection getConnection() throws SQLException { - return ds.getConnection(); + log.debug("Connection pool parameters:"); + log.debug("_ active connections: " + ds.getNumActive()); + log.debug("_ idle connections: " + ds.getNumIdle()); + log.debug("_ max active: " + ds.getMaxActive()); + if (ds.getNumActive() == ds.getMaxActive()) { + log.warn("Maximum number of database connections in pool in use!"); + } + Connection conn = ds.getConnection(); + log.debug("Return connection with hash: " + conn.hashCode()); + return conn; } public void closeConnection(Connection conn) throws SQLException { + log.debug("Close connection with hash: " + conn.hashCode()); conn.close(); }