diff options
author | Michael Cahill <michael.cahill@mongodb.com> | 2016-04-12 13:21:31 +1000 |
---|---|---|
committer | Alex Gorrod <alexander.gorrod@mongodb.com> | 2016-04-12 13:21:31 +1000 |
commit | ed2d07f2902bfb3c6e1c39ebd9828de060b421bc (patch) | |
tree | 8c98b7719f70cc89ba1eea56e45a18abd7ab1053 | |
parent | 353af609a97782ff86c97e5b6994399821ca57bd (diff) | |
download | mongo-ed2d07f2902bfb3c6e1c39ebd9828de060b421bc.tar.gz |
Merge pull request #2478 from wiredtiger/wt-2361 (#2642)
* Merge pull request #2478 from wiredtiger/wt-2361
WT-2361 column-store starting record number error
(cherry picked from commit 27763ba51a9f4dc8cc35e22e3a481219fa2d2d0b)
* WT-2361 Don't force evict when eviction is disabled (e.g., during checkpoints).
-rw-r--r-- | src/btree/bt_page.c | 3 | ||||
-rw-r--r-- | src/btree/bt_split.c | 9 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/btree/bt_page.c b/src/btree/bt_page.c index ad8f0293108..4531538de7d 100644 --- a/src/btree/bt_page.c +++ b/src/btree/bt_page.c @@ -135,7 +135,8 @@ __wt_page_in_func(WT_SESSION_IMPL *session, WT_REF *ref, uint32_t flags /* * Forcibly evict pages that are too big. */ - if (force_attempts < 10 && + if (!F_ISSET(session, WT_SESSION_NO_CACHE_CHECK) && + force_attempts < 10 && __evict_force_check(session, page, flags)) { ++force_attempts; ret = __wt_page_release_evict(session, ref); diff --git a/src/btree/bt_split.c b/src/btree/bt_split.c index 6e0436bb01f..7f3620bb361 100644 --- a/src/btree/bt_split.c +++ b/src/btree/bt_split.c @@ -1289,6 +1289,15 @@ __split_insert(WT_SESSION_IMPL *session, WT_REF *ref) __wt_page_modify_set(session, right); /* + * We perform insert splits concurrently with checkpoints, where the + * requirement is a checkpoint must include either the original page + * or both new pages. The page we're splitting is dirty, but that's + * insufficient: set the first dirty transaction to an impossibly old + * value so this page is not skipped by a checkpoint. + */ + page->modify->first_dirty_txn = WT_TXN_FIRST; + + /* * We modified the page above, which will have set the first dirty * transaction to the last transaction current running. However, the * updates we installed may be older than that. Set the first dirty |