This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-dbcp.git

commit bffe91002d7ff5f58e4b94360d7da82274e63d60
Author: Gary D. Gregory <garydgreg...@gmail.com>
AuthorDate: Mon May 26 10:46:00 2025 -0400

    Fix SpotBugs [ERROR] Medium: Shared primitive variables in one thread
    may not yield the value of the most recent write from another thread
    [org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS]
    AT_STALE_THREAD_WRITE_OF_PRIMITIVE
    
    - [ERROR] Medium: Shared primitive variable "loginTimeout" in one thread
    may not yield the value of the most recent write from another thread
    [org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS] At
    DriverAdapterCPDS.java:[line 644] AT_STALE_THREAD_WRITE_OF_PRIMITIVE
    - [ERROR] Medium: Shared primitive variable "maxIdle" in one thread may
    not yield the value of the most recent write from another thread
    [org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS] At
    DriverAdapterCPDS.java:[line 664] AT_STALE_THREAD_WRITE_OF_PRIMITIVE
    - [ERROR] Medium: Shared primitive variable "maxPreparedStatements" in
    one thread may not yield the value of the most recent write from another
    thread [org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS] At
    DriverAdapterCPDS.java:[line 673] AT_STALE_THREAD_WRITE_OF_PRIMITIVE
    - [ERROR] Medium: Shared primitive variable "numTestsPerEvictionRun" in
    one thread may not yield the value of the most recent write from another
    thread [org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS] At
    DriverAdapterCPDS.java:[line 722] AT_STALE_THREAD_WRITE_OF_PRIMITIVE
    - [ERROR] Medium: Shared primitive variable "poolPreparedStatements" in
    one thread may not yield the value of the most recent write from another
    thread [org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS] At
    DriverAdapterCPDS.java:[line 757] AT_STALE_THREAD_WRITE_OF_PRIMITIVE
---
 src/changes/changes.xml                                        |  8 +++++++-
 .../apache/commons/dbcp2/cpdsadapter/DriverAdapterCPDS.java    | 10 +++++-----
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index cb798696..967bbfd5 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -93,7 +93,13 @@ The <action> type attribute can be add,update,fix,remove.
       <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs 
[ERROR] Medium: Shared primitive variable "defaultTestOnReturn" in one thread 
may not yield the value of the most recent write from another thread 
[org.apache.commons.dbcp2.datasources.InstanceKeyDataSource] 
AT_STALE_THREAD_WRITE_OF_PRIMITIVE.</action>
       <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs 
[ERROR] Medium: Shared primitive variable "defaultTestWhileIdle" in one thread 
may not yield the value of the most recent write from another thread 
[org.apache.commons.dbcp2.datasources.InstanceKeyDataSource] 
AT_STALE_THREAD_WRITE_OF_PRIMITIVE.</action>
       <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs 
[ERROR] Medium: Shared primitive variable "defaultTransactionIsolation" in one 
thread may not yield the value of the most recent write from another thread 
[org.apache.commons.dbcp2.datasources.InstanceKeyDataSource] 
AT_STALE_THREAD_WRITE_OF_PRIMITIVE.</action>
-      <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs 
[ERROR] Medium: Shared primitive variable "rollbackAfterValidation" in one 
thread may not yield the value of the most recent write from another thread 
[org.apache.commons.dbcp2.datasources.InstanceKeyDataSource] 
AT_STALE_THREAD_WRITE_OF_PRIMITIVE.</action>      <!-- ADD -->
+      <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs 
[ERROR] Medium: Shared primitive variable "rollbackAfterValidation" in one 
thread may not yield the value of the most recent write from another thread 
[org.apache.commons.dbcp2.datasources.InstanceKeyDataSource] 
AT_STALE_THREAD_WRITE_OF_PRIMITIVE.</action>
+      <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs 
[ERROR] Medium: Shared primitive variable "loginTimeout" in one thread may not 
yield the value of the most recent write from another thread 
[org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS] At 
DriverAdapterCPDS.java:[line 644] AT_STALE_THREAD_WRITE_OF_PRIMITIVE.</action>
+      <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs 
[ERROR] Medium: Shared primitive variable "maxIdle" in one thread may not yield 
the value of the most recent write from another thread 
[org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS] At 
DriverAdapterCPDS.java:[line 664] AT_STALE_THREAD_WRITE_OF_PRIMITIVE.</action>
+      <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs 
[ERROR] Medium: Shared primitive variable "maxPreparedStatements" in one thread 
may not yield the value of the most recent write from another thread 
[org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS] At 
DriverAdapterCPDS.java:[line 673] AT_STALE_THREAD_WRITE_OF_PRIMITIVE.</action>
+      <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs 
[ERROR] Medium: Shared primitive variable "numTestsPerEvictionRun" in one 
thread may not yield the value of the most recent write from another thread 
[org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS] At 
DriverAdapterCPDS.java:[line 722] AT_STALE_THREAD_WRITE_OF_PRIMITIVE.</action>
+      <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs 
[ERROR] Medium: Shared primitive variable "poolPreparedStatements" in one 
thread may not yield the value of the most recent write from another thread 
[org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS] At 
DriverAdapterCPDS.java:[line 757] AT_STALE_THREAD_WRITE_OF_PRIMITIVE.</action>
+      <!-- ADD -->
       <!-- UPDATE -->
       <action type="update" dev="ggregory" due-to="Gary Gregory">Bump 
org.apache.commons:commons-parent from 78 to 81.</action>
       <action type="update" dev="ggregory" due-to="Gary Gregory">Bump 
org.apache.commons:commons-pool2 from 2.12.0 to 2.12.1 #474.</action>
diff --git 
a/src/main/java/org/apache/commons/dbcp2/cpdsadapter/DriverAdapterCPDS.java 
b/src/main/java/org/apache/commons/dbcp2/cpdsadapter/DriverAdapterCPDS.java
index 2cd519e8..cd2ca16b 100644
--- a/src/main/java/org/apache/commons/dbcp2/cpdsadapter/DriverAdapterCPDS.java
+++ b/src/main/java/org/apache/commons/dbcp2/cpdsadapter/DriverAdapterCPDS.java
@@ -129,28 +129,28 @@ public class DriverAdapterCPDS implements 
ConnectionPoolDataSource, Referenceabl
     private String driver;
 
     /** Login TimeOut in seconds */
-    private int loginTimeout;
+    private volatile int loginTimeout;
 
     /** Log stream. NOT USED */
     private transient PrintWriter logWriter;
 
     /** PreparedStatement pool property defaults to false. */
-    private boolean poolPreparedStatements;
+    private volatile boolean poolPreparedStatements;
 
     /** PreparedStatement pool property defaults to 10. */
-    private int maxIdle = 10;
+    private volatile int maxIdle = 10;
 
     /** PreparedStatement pool property defaults to {@link 
BaseObjectPoolConfig#DEFAULT_DURATION_BETWEEN_EVICTION_RUNS}. */
     private Duration durationBetweenEvictionRuns = 
BaseObjectPoolConfig.DEFAULT_DURATION_BETWEEN_EVICTION_RUNS;
 
     /** PreparedStatement pool property defaults to -1. */
-    private int numTestsPerEvictionRun = -1;
+    private volatile int numTestsPerEvictionRun = -1;
 
     /** PreparedStatement pool property defaults to {@link 
BaseObjectPoolConfig#DEFAULT_MIN_EVICTABLE_IDLE_DURATION}. */
     private Duration minEvictableIdleDuration = 
BaseObjectPoolConfig.DEFAULT_MIN_EVICTABLE_IDLE_DURATION;
 
     /** Maximum number of prepared statements, defaults to -1, meaning no 
limit. */
-    private int maxPreparedStatements = -1;
+    private volatile int maxPreparedStatements = -1;
 
     /** Whether or not getConnection has been called */
     private volatile boolean getConnectionCalled;

Reply via email to