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 44a4b74b27d5e5b6a4cafa24b958988f892aed3f
Author: Gary D. Gregory <garydgreg...@gmail.com>
AuthorDate: Mon May 26 10:50:38 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.PoolableConnectionFactory]
    AT_STALE_THREAD_WRITE_OF_PRIMITIVE
    
    - [ERROR] Medium: Shared primitive variable "autoCommitOnReturn" in one
    thread may not yield the value of the most recent write from another
    thread [org.apache.commons.dbcp2.PoolableConnectionFactory-]
    AT_STALE_THREAD_WRITE_OF_PRIMITIVE
    - [ERROR] Medium: Shared primitive variable "cacheState" in one thread
    may not yield the value of the most recent write from another thread
    [org.apache.commons.dbcp2.PoolableConnectionFactory]
    AT_STALE_THREAD_WRITE_OF_PRIMITIVE
    - [ERROR] Medium: Shared primitive variable "clearStatementPoolOnReturn"
    in one thread may not yield the value of the most recent write from
    another thread [org.apache.commons.dbcp2.PoolableConnectionFactory]
    AT_STALE_THREAD_WRITE_OF_PRIMITIVE
    - [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.PoolableConnectionFactory]
    AT_STALE_THREAD_WRITE_OF_PRIMITIVE
    - [ERROR] Medium: Shared primitive variable "autoCommitOnReturn" in one
    thread may not yield the value of the most recent write from another
    thread [org.apache.commons.dbcp2.PoolableConnectionFactory]
    AT_STALE_THREAD_WRITE_OF_PRIMITIVE
    - [ERROR] Medium: Shared primitive variable "fastFailValidation" in one
    thread may not yield the value of the most recent write from another
    thread [org.apache.commons.dbcp2.PoolableConnectionFactory]
    AT_STALE_THREAD_WRITE_OF_PRIMITIVE
    - [ERROR] Medium: Shared primitive variable "maxOpenPreparedStatements"
    in one thread may not yield the value of the most recent write from
    another thread [org.apache.commons.dbcp2.PoolableConnectionFactory]
    AT_STALE_THREAD_WRITE_OF_PRIMITIVE
    - [ERROR] Medium: Shared primitive variable "poolStatements" in one
    thread may not yield the value of the most recent write from another
    thread [org.apache.commons.dbcp2.PoolableConnectionFactory]
    AT_STALE_THREAD_WRITE_OF_PRIMITIVE
    - [ERROR] Medium: Shared primitive variable "rollbackOnReturn" in one
    thread may not yield the value of the most recent write from another
    thread [org.apache.commons.dbcp2.PoolableConnectionFactory]
    AT_STALE_THREAD_WRITE_OF_PRIMITIVE
---
 src/changes/changes.xml                                  |  9 +++++++++
 .../apache/commons/dbcp2/PoolableConnectionFactory.java  | 16 ++++++++--------
 2 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 967bbfd5..4234a424 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -99,6 +99,15 @@ 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 "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>
+      <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs 
[ERROR] Medium: Shared primitive variable "autoCommitOnReturn" in one thread 
may not yield the value of the most recent write from another thread 
[org.apache.commons.dbcp2.PoolableConnectionFactory-] 
AT_STALE_THREAD_WRITE_OF_PRIMITIVE.</action>
+      <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs 
[ERROR] Medium: Shared primitive variable "cacheState" in one thread may not 
yield the value of the most recent write from another thread 
[org.apache.commons.dbcp2.PoolableConnectionFactory] 
AT_STALE_THREAD_WRITE_OF_PRIMITIVE.</action>
+      <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs 
[ERROR] Medium: Shared primitive variable "clearStatementPoolOnReturn" in one 
thread may not yield the value of the most recent write from another thread 
[org.apache.commons.dbcp2.PoolableConnectionFactory] 
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.PoolableConnectionFactory] 
AT_STALE_THREAD_WRITE_OF_PRIMITIVE.</action>
+      <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs 
[ERROR] Medium: Shared primitive variable "autoCommitOnReturn" in one thread 
may not yield the value of the most recent write from another thread 
[org.apache.commons.dbcp2.PoolableConnectionFactory] 
AT_STALE_THREAD_WRITE_OF_PRIMITIVE.</action>
+      <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs 
[ERROR] Medium: Shared primitive variable "fastFailValidation" in one thread 
may not yield the value of the most recent write from another thread 
[org.apache.commons.dbcp2.PoolableConnectionFactory] 
AT_STALE_THREAD_WRITE_OF_PRIMITIVE.</action>
+      <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs 
[ERROR] Medium: Shared primitive variable "maxOpenPreparedStatements" in one 
thread may not yield the value of the most recent write from another thread 
[org.apache.commons.dbcp2.PoolableConnectionFactory] 
AT_STALE_THREAD_WRITE_OF_PRIMITIVE.</action>
+      <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs 
[ERROR] Medium: Shared primitive variable "poolStatements" in one thread may 
not yield the value of the most recent write from another thread 
[org.apache.commons.dbcp2.PoolableConnectionFactory] 
AT_STALE_THREAD_WRITE_OF_PRIMITIVE.</action>
+      <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs 
[ERROR] Medium: Shared primitive variable "rollbackOnReturn" in one thread may 
not yield the value of the most recent write from another thread 
[org.apache.commons.dbcp2.PoolableConnectionFactory] 
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>
diff --git 
a/src/main/java/org/apache/commons/dbcp2/PoolableConnectionFactory.java 
b/src/main/java/org/apache/commons/dbcp2/PoolableConnectionFactory.java
index 7918b699..6f21326d 100644
--- a/src/main/java/org/apache/commons/dbcp2/PoolableConnectionFactory.java
+++ b/src/main/java/org/apache/commons/dbcp2/PoolableConnectionFactory.java
@@ -66,7 +66,7 @@ public class PoolableConnectionFactory implements 
PooledObjectFactory<PoolableCo
 
     private Collection<String> disconnectionIgnoreSqlCodes;
 
-    private boolean fastFailValidation = true;
+    private volatile boolean fastFailValidation = true;
 
     private volatile ObjectPool<PoolableConnection> pool;
 
@@ -74,23 +74,23 @@ public class PoolableConnectionFactory implements 
PooledObjectFactory<PoolableCo
 
     private Boolean defaultAutoCommit;
 
-    private boolean autoCommitOnReturn = true;
+    private volatile boolean autoCommitOnReturn = true;
 
-    private boolean rollbackOnReturn = true;
+    private volatile boolean rollbackOnReturn = true;
 
-    private int defaultTransactionIsolation = UNKNOWN_TRANSACTION_ISOLATION;
+    private volatile int defaultTransactionIsolation = 
UNKNOWN_TRANSACTION_ISOLATION;
 
     private String defaultCatalog;
 
     private String defaultSchema;
 
-    private boolean cacheState;
+    private volatile boolean cacheState;
 
-    private boolean poolStatements;
+    private volatile boolean poolStatements;
 
-    private boolean clearStatementPoolOnReturn;
+    private volatile boolean clearStatementPoolOnReturn;
 
-    private int maxOpenPreparedStatements = 
GenericKeyedObjectPoolConfig.DEFAULT_MAX_TOTAL_PER_KEY;
+    private volatile int maxOpenPreparedStatements = 
GenericKeyedObjectPoolConfig.DEFAULT_MAX_TOTAL_PER_KEY;
 
     private Duration maxConnDuration = Duration.ofMillis(-1);
 

Reply via email to