ReactiveCouchbaseTemplate can overwrite PseudoArgs. (#1685)

* ReactiveCouchbaseTemplate can overwrite PseudoArgs under heavy concurrency.

Raised as issue #1684

* Added author
This commit is contained in:
Andy Toone
2023-03-07 01:30:26 +00:00
committed by mikereiche
parent efd86888d8
commit 89e9b90dda
2 changed files with 72 additions and 1 deletions

View File

@@ -45,6 +45,7 @@ import com.couchbase.client.java.query.QueryScanConsistency;
* @author Jorge Rodriguez Martin
* @author Carlos Espinaco
* @author Tigran Babloyan
* @author Andy Toone
*/
public class ReactiveCouchbaseTemplate implements ReactiveCouchbaseOperations, ApplicationContextAware {
@@ -251,7 +252,14 @@ public class ReactiveCouchbaseTemplate implements ReactiveCouchbaseOperations, A
* set the ThreadLocal field
*/
public void setPseudoArgs(PseudoArgs<?> threadLocalArgs) {
this.threadLocalArgs = new ThreadLocal<>();
if (this.threadLocalArgs == null) {
synchronized (this) {
if (this.threadLocalArgs == null) {
this.threadLocalArgs = new ThreadLocal<>();
}
}
}
this.threadLocalArgs.set(threadLocalArgs);
}