summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Cahill <michael.cahill@mongodb.com>2016-09-26 15:36:15 +1000
committerAlex Gorrod <alexander.gorrod@mongodb.com>2016-09-26 15:36:15 +1000
commit5fb852354745b9efe638183084ee00db821aa132 (patch)
treeb5a19458b0a49252b4231f1660fc63553b439268 /src
parent7cc8f4bfbc5b45486e35072771c659e3c9e12ece (diff)
downloadmongo-5fb852354745b9efe638183084ee00db821aa132.tar.gz
WT-2928 Don't give up when the urgent queue is half empty. (#3063)
Diffstat (limited to 'src')
-rw-r--r--src/evict/evict_lru.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/evict/evict_lru.c b/src/evict/evict_lru.c
index ad4f3ecc2b5..acc81f566a5 100644
--- a/src/evict/evict_lru.c
+++ b/src/evict/evict_lru.c
@@ -1579,13 +1579,12 @@ __evict_get_ref(
if (is_server &&
(cache->evict_empty_score > WT_EVICT_SCORE_CUTOFF ||
__evict_queue_empty(cache->evict_fill_queue, false))) {
- do {
+ while ((ret = __wt_spin_trylock(
+ session, &cache->evict_queue_lock)) == EBUSY)
if ((!urgent_ok ||
__evict_queue_empty(urgent_queue, false)) &&
!__evict_queue_full(cache->evict_fill_queue))
return (WT_NOTFOUND);
- } while ((ret = __wt_spin_trylock(
- session, &cache->evict_queue_lock)) == EBUSY);
WT_RET(ret);
} else
@@ -1621,7 +1620,8 @@ __evict_get_ref(
*/
for (;;) {
/* Verify there are still pages available. */
- if (__evict_queue_empty(queue, is_server)) {
+ if (__evict_queue_empty(
+ queue, is_server && queue != urgent_queue)) {
WT_STAT_CONN_INCR(
session, cache_eviction_get_ref_empty2);
return (WT_NOTFOUND);