summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/src/conn/conn_cache_pool.c
diff options
context:
space:
mode:
authorSiddhartha Mahajan <siddhartha.mahajan8899@mongodb.com>2022-12-22 23:13:39 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-12-23 00:05:50 +0000
commit8efe169ec09d29a01539f7dd155056e3bfc09f2a (patch)
treeb0fc963f09d0cf226a223c72126e1ce95aa95bf6 /src/third_party/wiredtiger/src/conn/conn_cache_pool.c
parent113b9ddc9568139a5026d6b416fca4b812d90caf (diff)
downloadmongo-8efe169ec09d29a01539f7dd155056e3bfc09f2a.tar.gz
Import wiredtiger: f7988f5062308e4766aafee8f7ccd584c1d0cc43 from branch mongodb-master
ref: bd898f8d2b..f7988f5062 for: 6.3.0-rc0 WT-10284 Updating connection cache pool pool_flags to atomic
Diffstat (limited to 'src/third_party/wiredtiger/src/conn/conn_cache_pool.c')
-rw-r--r--src/third_party/wiredtiger/src/conn/conn_cache_pool.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/third_party/wiredtiger/src/conn/conn_cache_pool.c b/src/third_party/wiredtiger/src/conn/conn_cache_pool.c
index 587580df1d4..5e8b2237d30 100644
--- a/src/third_party/wiredtiger/src/conn/conn_cache_pool.c
+++ b/src/third_party/wiredtiger/src/conn/conn_cache_pool.c
@@ -260,7 +260,7 @@ __wt_conn_cache_pool_open(WT_SESSION_IMPL *session)
* process when the active connection shuts down.
*/
F_SET(cp, WT_CACHE_POOL_ACTIVE);
- FLD_SET(cache->pool_flags, WT_CACHE_POOL_RUN);
+ FLD_SET_ATOMIC_16(cache->pool_flags_atomic, WT_CACHE_POOL_RUN);
WT_RET(__wt_thread_create(session, &cache->cp_tid, __wt_cache_pool_server, cache->cp_session));
/* Wake up the cache pool server to get our initial chunk. */
@@ -320,7 +320,7 @@ __wt_conn_cache_pool_destroy(WT_SESSION_IMPL *session)
__wt_spin_unlock(session, &cp->cache_pool_lock);
WT_NOT_READ(cp_locked, false);
- FLD_CLR(cache->pool_flags, WT_CACHE_POOL_RUN);
+ FLD_CLR_ATOMIC_16(cache->pool_flags_atomic, WT_CACHE_POOL_RUN);
__wt_cond_signal(session, cp->cache_pool_cond);
WT_TRET(__wt_thread_join(session, &cache->cp_tid));
@@ -373,7 +373,7 @@ __wt_conn_cache_pool_destroy(WT_SESSION_IMPL *session)
__wt_spin_unlock(session, &cp->cache_pool_lock);
/* Notify other participants if we were managing */
- if (FLD_ISSET(cache->pool_flags, WT_CACHE_POOL_MANAGER)) {
+ if (FLD_ISSET_ATOMIC_16(cache->pool_flags_atomic, WT_CACHE_POOL_MANAGER)) {
cp->pool_managed = 0;
__wt_verbose(
session, WT_VERB_SHARED_CACHE, "%s", "Shutting down shared cache manager connection");
@@ -420,7 +420,7 @@ __cache_pool_balance(WT_SESSION_IMPL *session, bool forward)
* participant shutdown if we spend a long time balancing.
*/
for (i = 0; i < 2 * WT_CACHE_POOL_BUMP_THRESHOLD && F_ISSET(cp, WT_CACHE_POOL_ACTIVE) &&
- FLD_ISSET(S2C(session)->cache->pool_flags, WT_CACHE_POOL_RUN);
+ FLD_ISSET_ATOMIC_16(S2C(session)->cache->pool_flags_atomic, WT_CACHE_POOL_RUN);
i++) {
__cache_pool_adjust(session, highest, bump_threshold, forward, &adjusted);
/*
@@ -694,19 +694,21 @@ __wt_cache_pool_server(void *arg)
cache = S2C(session)->cache;
forward = true;
- while (F_ISSET(cp, WT_CACHE_POOL_ACTIVE) && FLD_ISSET(cache->pool_flags, WT_CACHE_POOL_RUN)) {
+ while (F_ISSET(cp, WT_CACHE_POOL_ACTIVE) &&
+ FLD_ISSET_ATOMIC_16(cache->pool_flags_atomic, WT_CACHE_POOL_RUN)) {
if (cp->currently_used <= cp->size)
__wt_cond_wait(session, cp->cache_pool_cond, WT_MILLION, NULL);
/*
* Re-check pool run flag - since we want to avoid getting the lock on shutdown.
*/
- if (!F_ISSET(cp, WT_CACHE_POOL_ACTIVE) && FLD_ISSET(cache->pool_flags, WT_CACHE_POOL_RUN))
+ if (!F_ISSET(cp, WT_CACHE_POOL_ACTIVE) &&
+ FLD_ISSET_ATOMIC_16(cache->pool_flags_atomic, WT_CACHE_POOL_RUN))
break;
/* Try to become the managing thread */
if (__wt_atomic_cas8(&cp->pool_managed, 0, 1)) {
- FLD_SET(cache->pool_flags, WT_CACHE_POOL_MANAGER);
+ FLD_SET_ATOMIC_16(cache->pool_flags_atomic, WT_CACHE_POOL_MANAGER);
__wt_verbose(session, WT_VERB_SHARED_CACHE, "%s", "Cache pool switched manager thread");
}
@@ -714,7 +716,7 @@ __wt_cache_pool_server(void *arg)
* Continue even if there was an error. Details of errors are reported in the balance
* function.
*/
- if (FLD_ISSET(cache->pool_flags, WT_CACHE_POOL_MANAGER)) {
+ if (FLD_ISSET_ATOMIC_16(cache->pool_flags_atomic, WT_CACHE_POOL_MANAGER)) {
__cache_pool_balance(session, forward);
forward = !forward;
}