NIHVIVO-2576 addresses issue with db connections closed by MySQL not being returned to the pool
This commit is contained in:
parent
6363b3fb11
commit
2f132d6290
4 changed files with 30 additions and 15 deletions
Binary file not shown.
Binary file not shown.
BIN
webapp/lib/commons-dbcp-1.4.jar
Normal file
BIN
webapp/lib/commons-dbcp-1.4.jar
Normal file
Binary file not shown.
|
@ -28,21 +28,36 @@ public class SDBGraphGenerator implements GraphGenerator {
|
|||
this.storeDesc = storeDesc;
|
||||
this.graphID = graphID;
|
||||
}
|
||||
|
||||
public Graph generateGraph() {
|
||||
try {
|
||||
if ( ( this.connection == null ) || ( this.connection.isClosed() ) ) {
|
||||
this.connection = ds.getConnection();
|
||||
}
|
||||
Store store = SDBFactory.connectStore(connection, storeDesc);
|
||||
return SDBFactory.connectNamedGraph(store, graphID);
|
||||
} catch (SQLException e) {
|
||||
String errMsg = "Unable to generate SDB graph";
|
||||
log.error(errMsg, e);
|
||||
throw new RuntimeException(errMsg, e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public Graph generateGraph() {
|
||||
try {
|
||||
if ( this.connection == null ) {
|
||||
this.connection = ds.getConnection();
|
||||
} else if ( this.connection.isClosed() ) {
|
||||
try {
|
||||
this.connection.close();
|
||||
} catch (SQLException e) {
|
||||
// The connection will throw an "Already closed"
|
||||
// SQLException that we need to catch. We need to
|
||||
// make this extra call to .close() in order to make
|
||||
// sure that the connection is returned to the pool.
|
||||
// This depends on the particular behavior of version
|
||||
// 1.4 of the Apache Commons connection pool library.
|
||||
// Earlier versions threw the exception right away,
|
||||
// making this impossible. Future versions may do the
|
||||
// same.
|
||||
}
|
||||
this.connection = ds.getConnection();
|
||||
}
|
||||
Store store = SDBFactory.connectStore(connection, storeDesc);
|
||||
return SDBFactory.connectNamedGraph(store, graphID);
|
||||
} catch (SQLException e) {
|
||||
String errMsg = "Unable to generate SDB graph";
|
||||
log.error(errMsg, e);
|
||||
throw new RuntimeException(errMsg, e);
|
||||
}
|
||||
}
|
||||
|
||||
public Connection getConnection() {
|
||||
return connection;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue