diff options
author | Siddhartha Mahajan <siddhartha.mahajan8899@mongodb.com> | 2022-12-22 23:13:39 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-12-23 00:05:50 +0000 |
commit | 8efe169ec09d29a01539f7dd155056e3bfc09f2a (patch) | |
tree | b0fc963f09d0cf226a223c72126e1ce95aa95bf6 /src/third_party/wiredtiger/src/conn/conn_cache_pool.c | |
parent | 113b9ddc9568139a5026d6b416fca4b812d90caf (diff) | |
download | mongo-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.c | 18 |
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; } |