This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 9.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/9.0.x by this push: new 7a173495d5 Update DBCP to f131286 (2023-03-08, 2.10.0-SNAPSHOT) 7a173495d5 is described below commit 7a173495d5e5acb542059e00a9f824af026d697a Author: Mark Thomas <ma...@apache.org> AuthorDate: Wed Mar 8 14:26:34 2023 +0000 Update DBCP to f131286 (2023-03-08, 2.10.0-SNAPSHOT) This corrects a regression introduced in 10.1.5 --- MERGE.txt | 2 +- .../apache/tomcat/dbcp/dbcp2/AbandonedTrace.java | 10 +++++--- .../tomcat/dbcp/dbcp2/DelegatingConnection.java | 13 +++++++---- .../dbcp/dbcp2/DelegatingDatabaseMetaData.java | 1 - java/org/apache/tomcat/dbcp/dbcp2/PStmtKey.java | 2 +- .../dbcp/dbcp2/PoolableCallableStatement.java | 4 +--- .../dbcp/dbcp2/PoolablePreparedStatement.java | 4 +--- .../dbcp/dbcp2/cpdsadapter/DriverAdapterCPDS.java | 4 ++-- .../dbcp2/cpdsadapter/PooledConnectionImpl.java | 27 ++++++++++++---------- .../dbcp2/datasources/InstanceKeyDataSource.java | 1 - webapps/docs/changelog.xml | 5 ++++ 11 files changed, 41 insertions(+), 32 deletions(-) diff --git a/MERGE.txt b/MERGE.txt index 82df920672..8f24ba74ea 100644 --- a/MERGE.txt +++ b/MERGE.txt @@ -72,4 +72,4 @@ Sub-tree src/main/java/org/apache/commons/dbcp2 src/main/resources/org/apache/commons/dbcp2 The SHA1 ID / tag for the most recent commit to be merged to Tomcat is: -f13128604536e78bb1b45b44f74128e93cfbb7cc (2023-01-03) +b1e0c86d101aa43029625eb191aaee4306911702 (2023-03-08) diff --git a/java/org/apache/tomcat/dbcp/dbcp2/AbandonedTrace.java b/java/org/apache/tomcat/dbcp/dbcp2/AbandonedTrace.java index a094f16d31..e57b4108a1 100644 --- a/java/org/apache/tomcat/dbcp/dbcp2/AbandonedTrace.java +++ b/java/org/apache/tomcat/dbcp/dbcp2/AbandonedTrace.java @@ -37,6 +37,12 @@ import org.apache.tomcat.dbcp.pool2.TrackedUse; */ public class AbandonedTrace implements TrackedUse, AutoCloseable { + static void add(AbandonedTrace receiver, AbandonedTrace trace) { + if (receiver != null) { + receiver.addTrace(trace); + } + } + /** A list of objects created by children of this object. */ private final List<WeakReference<AbandonedTrace>> traceList = new ArrayList<>(); @@ -152,9 +158,7 @@ public class AbandonedTrace implements TrackedUse, AutoCloseable { * AbandonedTrace parent object. */ private void init(final AbandonedTrace parent) { - if (parent != null) { - parent.addTrace(this); - } + AbandonedTrace.add(parent, this); } /** diff --git a/java/org/apache/tomcat/dbcp/dbcp2/DelegatingConnection.java b/java/org/apache/tomcat/dbcp/dbcp2/DelegatingConnection.java index 6394875366..a9e620d3b7 100644 --- a/java/org/apache/tomcat/dbcp/dbcp2/DelegatingConnection.java +++ b/java/org/apache/tomcat/dbcp/dbcp2/DelegatingConnection.java @@ -41,6 +41,8 @@ import java.util.Map; import java.util.Properties; import java.util.concurrent.Executor; +import org.apache.tomcat.dbcp.dbcp2.managed.ManagedConnection; + /** * A base delegating implementation of {@link Connection}. * <p> @@ -78,7 +80,7 @@ public class DelegatingConnection<C extends Connection> extends AbandonedTrace i /** * Creates a wrapper for the Connection which traces this Connection in the AbandonedObjectPool. * - * @param connection the {@link Connection} to delegate all calls to. + * @param connection the {@link Connection} to delegate all calls to, may be null (see {@link ManagedConnection}). */ public DelegatingConnection(final C connection) { this.connection = connection; @@ -104,11 +106,12 @@ public class DelegatingConnection<C extends Connection> extends AbandonedTrace i protected void checkOpen() throws SQLException { if (closed) { if (null != connection) { - String label = ""; + String label; try { label = connection.toString(); - } catch (final Exception ignored) { - // ignore, leave label empty + } catch (final Exception e) { + // leave label empty + label = ""; } throw new SQLException("Connection " + label + " is closed."); } @@ -889,7 +892,7 @@ public class DelegatingConnection<C extends Connection> extends AbandonedTrace i * Sets my delegate. * * @param connection - * my delegate. + * my delegate, may be null. */ public void setDelegate(final C connection) { this.connection = connection; diff --git a/java/org/apache/tomcat/dbcp/dbcp2/DelegatingDatabaseMetaData.java b/java/org/apache/tomcat/dbcp/dbcp2/DelegatingDatabaseMetaData.java index 00f816cbd2..fa9bfaa34e 100644 --- a/java/org/apache/tomcat/dbcp/dbcp2/DelegatingDatabaseMetaData.java +++ b/java/org/apache/tomcat/dbcp/dbcp2/DelegatingDatabaseMetaData.java @@ -1894,7 +1894,6 @@ public class DelegatingDatabaseMetaData implements DatabaseMetaData { } } - /* JDBC_4_ANT_KEY_END */ @Override public <T> T unwrap(final Class<T> iface) throws SQLException { diff --git a/java/org/apache/tomcat/dbcp/dbcp2/PStmtKey.java b/java/org/apache/tomcat/dbcp/dbcp2/PStmtKey.java index 64e261b7f0..6052f7d5e2 100644 --- a/java/org/apache/tomcat/dbcp/dbcp2/PStmtKey.java +++ b/java/org/apache/tomcat/dbcp/dbcp2/PStmtKey.java @@ -182,7 +182,7 @@ public class PStmtKey { * {@code ResultSet.TYPE_SCROLL_INSENSITIVE}, or {@code ResultSet.TYPE_SCROLL_SENSITIVE}. * @param resultSetConcurrency A concurrency type; one of {@code ResultSet.CONCUR_READ_ONLY} or * {@code ResultSet.CONCUR_UPDATABLE}. - * @deprecated Use @link {@link #PStmtKey(String, String, String, int, int)}. + * @deprecated Use {@link #PStmtKey(String, String, String, int, int)}. */ @Deprecated public PStmtKey(final String sql, final String catalog, final int resultSetType, final int resultSetConcurrency) { diff --git a/java/org/apache/tomcat/dbcp/dbcp2/PoolableCallableStatement.java b/java/org/apache/tomcat/dbcp/dbcp2/PoolableCallableStatement.java index 447aa22264..08d690d424 100644 --- a/java/org/apache/tomcat/dbcp/dbcp2/PoolableCallableStatement.java +++ b/java/org/apache/tomcat/dbcp/dbcp2/PoolableCallableStatement.java @@ -76,9 +76,7 @@ public class PoolableCallableStatement extends DelegatingCallableStatement { @Override public void activate() throws SQLException { setClosedInternal(false); - if (getConnectionInternal() != null) { - getConnectionInternal().addTrace(this); - } + AbandonedTrace.add(getConnectionInternal(), this); super.activate(); } diff --git a/java/org/apache/tomcat/dbcp/dbcp2/PoolablePreparedStatement.java b/java/org/apache/tomcat/dbcp/dbcp2/PoolablePreparedStatement.java index 1babf76d4d..30723e0320 100644 --- a/java/org/apache/tomcat/dbcp/dbcp2/PoolablePreparedStatement.java +++ b/java/org/apache/tomcat/dbcp/dbcp2/PoolablePreparedStatement.java @@ -74,9 +74,7 @@ public class PoolablePreparedStatement<K> extends DelegatingPreparedStatement { @Override public void activate() throws SQLException { setClosedInternal(false); - if (getConnectionInternal() != null) { - getConnectionInternal().addTrace(this); - } + AbandonedTrace.add(getConnectionInternal(), this); super.activate(); } diff --git a/java/org/apache/tomcat/dbcp/dbcp2/cpdsadapter/DriverAdapterCPDS.java b/java/org/apache/tomcat/dbcp/dbcp2/cpdsadapter/DriverAdapterCPDS.java index 642ced624e..c875fc247f 100644 --- a/java/org/apache/tomcat/dbcp/dbcp2/cpdsadapter/DriverAdapterCPDS.java +++ b/java/org/apache/tomcat/dbcp/dbcp2/cpdsadapter/DriverAdapterCPDS.java @@ -288,7 +288,7 @@ public class DriverAdapterCPDS implements ConnectionPoolDataSource, Referenceabl if (isNotEmpty(ra)) { setDriver(getStringContent(ra)); } - ra = ref.get("connectionString"); + ra = ref.get("url"); if (isNotEmpty(ra)) { setUrl(getStringContent(ra)); } @@ -449,7 +449,7 @@ public class DriverAdapterCPDS implements ConnectionPoolDataSource, Referenceabl ref.add(new StringRefAddr("loginTimeout", String.valueOf(getLoginTimeout()))); ref.add(new StringRefAddr(Constants.KEY_PASSWORD, getPassword())); ref.add(new StringRefAddr(Constants.KEY_USER, getUser())); - ref.add(new StringRefAddr("connectionString", getUrl())); + ref.add(new StringRefAddr("url", getUrl())); ref.add(new StringRefAddr("poolPreparedStatements", String.valueOf(isPoolPreparedStatements()))); ref.add(new StringRefAddr("maxIdle", String.valueOf(getMaxIdle()))); diff --git a/java/org/apache/tomcat/dbcp/dbcp2/cpdsadapter/PooledConnectionImpl.java b/java/org/apache/tomcat/dbcp/dbcp2/cpdsadapter/PooledConnectionImpl.java index c247cfd4cc..ad2c3ebe9c 100644 --- a/java/org/apache/tomcat/dbcp/dbcp2/cpdsadapter/PooledConnectionImpl.java +++ b/java/org/apache/tomcat/dbcp/dbcp2/cpdsadapter/PooledConnectionImpl.java @@ -134,13 +134,12 @@ final class PooledConnectionImpl statementEventListeners.add(listener); } } - /* JDBC_4_ANT_KEY_END */ /** * Throws an SQLException, if isClosed is true */ private void assertOpen() throws SQLException { - if (closed) { + if (closed || connection == null) { throw new SQLException(CLOSED); } } @@ -381,6 +380,11 @@ final class PooledConnectionImpl return logicalConnection; } + private Connection getRawConnection() throws SQLException { + assertOpen(); + return connection; + } + private String getSchemaOrNull() { try { return connection == null ? null : Jdbc41Bridge.getSchema(connection); @@ -461,7 +465,7 @@ final class PooledConnectionImpl */ CallableStatement prepareCall(final String sql) throws SQLException { if (pStmtPool == null) { - return connection.prepareCall(sql); + return getRawConnection().prepareCall(sql); } try { return (CallableStatement) pStmtPool.borrowObject(createKey(sql, StatementType.CALLABLE_STATEMENT)); @@ -494,7 +498,7 @@ final class PooledConnectionImpl CallableStatement prepareCall(final String sql, final int resultSetType, final int resultSetConcurrency) throws SQLException { if (pStmtPool == null) { - return connection.prepareCall(sql, resultSetType, resultSetConcurrency); + return getRawConnection().prepareCall(sql, resultSetType, resultSetConcurrency); } try { return (CallableStatement) pStmtPool.borrowObject( @@ -531,7 +535,7 @@ final class PooledConnectionImpl CallableStatement prepareCall(final String sql, final int resultSetType, final int resultSetConcurrency, final int resultSetHoldability) throws SQLException { if (pStmtPool == null) { - return connection.prepareCall(sql, resultSetType, resultSetConcurrency, resultSetHoldability); + return getRawConnection().prepareCall(sql, resultSetType, resultSetConcurrency, resultSetHoldability); } try { return (CallableStatement) pStmtPool.borrowObject(createKey(sql, resultSetType, resultSetConcurrency, @@ -553,7 +557,7 @@ final class PooledConnectionImpl */ PreparedStatement prepareStatement(final String sql) throws SQLException { if (pStmtPool == null) { - return connection.prepareStatement(sql); + return getRawConnection().prepareStatement(sql); } try { return pStmtPool.borrowObject(createKey(sql)); @@ -579,7 +583,7 @@ final class PooledConnectionImpl */ PreparedStatement prepareStatement(final String sql, final int autoGeneratedKeys) throws SQLException { if (pStmtPool == null) { - return connection.prepareStatement(sql, autoGeneratedKeys); + return getRawConnection().prepareStatement(sql, autoGeneratedKeys); } try { return pStmtPool.borrowObject(createKey(sql, autoGeneratedKeys)); @@ -611,7 +615,7 @@ final class PooledConnectionImpl PreparedStatement prepareStatement(final String sql, final int resultSetType, final int resultSetConcurrency) throws SQLException { if (pStmtPool == null) { - return connection.prepareStatement(sql, resultSetType, resultSetConcurrency); + return getRawConnection().prepareStatement(sql, resultSetType, resultSetConcurrency); } try { return pStmtPool.borrowObject(createKey(sql, resultSetType, resultSetConcurrency)); @@ -625,7 +629,7 @@ final class PooledConnectionImpl PreparedStatement prepareStatement(final String sql, final int resultSetType, final int resultSetConcurrency, final int resultSetHoldability) throws SQLException { if (pStmtPool == null) { - return connection.prepareStatement(sql, resultSetType, resultSetConcurrency, resultSetHoldability); + return getRawConnection().prepareStatement(sql, resultSetType, resultSetConcurrency, resultSetHoldability); } try { return pStmtPool.borrowObject(createKey(sql, resultSetType, resultSetConcurrency, resultSetHoldability)); @@ -638,7 +642,7 @@ final class PooledConnectionImpl PreparedStatement prepareStatement(final String sql, final int[] columnIndexes) throws SQLException { if (pStmtPool == null) { - return connection.prepareStatement(sql, columnIndexes); + return getRawConnection().prepareStatement(sql, columnIndexes); } try { return pStmtPool.borrowObject(createKey(sql, columnIndexes)); @@ -651,7 +655,7 @@ final class PooledConnectionImpl PreparedStatement prepareStatement(final String sql, final String[] columnNames) throws SQLException { if (pStmtPool == null) { - return connection.prepareStatement(sql, columnNames); + return getRawConnection().prepareStatement(sql, columnNames); } try { return pStmtPool.borrowObject(createKey(sql, columnNames)); @@ -674,7 +678,6 @@ final class PooledConnectionImpl public void removeStatementEventListener(final StatementEventListener listener) { statementEventListeners.remove(listener); } - /* JDBC_4_ANT_KEY_END */ /** * Sets the value of the accessToUnderlyingConnectionAllowed property. It controls if the PoolGuard allows access to diff --git a/java/org/apache/tomcat/dbcp/dbcp2/datasources/InstanceKeyDataSource.java b/java/org/apache/tomcat/dbcp/dbcp2/datasources/InstanceKeyDataSource.java index 2fbfb18a24..4709d118ba 100644 --- a/java/org/apache/tomcat/dbcp/dbcp2/datasources/InstanceKeyDataSource.java +++ b/java/org/apache/tomcat/dbcp/dbcp2/datasources/InstanceKeyDataSource.java @@ -1324,5 +1324,4 @@ public abstract class InstanceKeyDataSource implements DataSource, Referenceable } throw new SQLException(this + " is not a wrapper for " + iface); } - /* JDBC_4_ANT_KEY_END */ } diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index f9e1d61715..9c775e9f3d 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -157,6 +157,11 @@ to the jvm in <code>catalina.sh</code> when calling <code>version</code>. Patch suggested by Eric Hamilton. (lihan) </fix> + <update> + Update the internal fork of Commons DBCP to f131286 (2023-03-08, + 2.10.0-SNAPSHOT). This corrects a regression introduced in 9.0.71. + (markt) + </update> </changelog> </subsection> </section> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org