IDEMPIERE-5994 Connection leak when using DB.prepareStatement(badSql, null) (#2184)

* IDEMPIERE-5994 Connection leak when using DB.prepareStatement(badSql, null)

* - implement approach suggested by Heng Sin
This commit is contained in:
Carlos Ruiz 2024-01-15 04:41:29 +01:00
parent 0b5c7e2256
commit c9235a02b4
2 changed files with 7 additions and 1 deletions

View File

@ -15,6 +15,7 @@ package org.compiere.db;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level; import java.util.logging.Level;
import javax.sql.RowSet; import javax.sql.RowSet;
@ -95,6 +96,11 @@ public class PreparedStatementProxy extends StatementProxy {
p_stmt = conn.prepareStatement(p_vo.getSql(), p_vo p_stmt = conn.prepareStatement(p_vo.getSql(), p_vo
.getResultSetType(), p_vo.getResultSetConcurrency()); .getResultSetType(), p_vo.getResultSetConcurrency());
} catch (Exception e) { } catch (Exception e) {
try {
this.close();
} catch (SQLException e1) {
// ignore
}
log.log(Level.SEVERE, p_vo.getSql(), e); log.log(Level.SEVERE, p_vo.getSql(), e);
throw new DBException(e); throw new DBException(e);
} }

View File

@ -184,7 +184,7 @@ public class StatementProxy implements InvocationHandler {
* @throws SQLException * @throws SQLException
* @see java.sql.Statement#close() * @see java.sql.Statement#close()
*/ */
private void close () throws SQLException protected void close () throws SQLException
{ {
if (close) return; if (close) return;