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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]