summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Chen <luke.chen@mongodb.com>2022-10-21 16:22:58 +1100
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-10-21 05:53:12 +0000
commit7b1e3917a4f1cabeea49c13a441e142023d1581d (patch)
tree76537a907831643bad1421f56629a15c4f03806b
parent38b9381c6282a46ac4e906aca4bfdf22e2fae752 (diff)
downloadmongo-7b1e3917a4f1cabeea49c13a441e142023d1581d.tar.gz
Import wiredtiger: 9a95edfe238515bfd3186a1fd3a416e6b62905d1 from branch mongodb-5.0
ref: 05f01e412e..9a95edfe23 for: 5.0.14 WT-8234 Prevent eviction of internal pages while reconciling leaf pages which could refer to their memory. (#7813) (#8348)
-rw-r--r--src/third_party/wiredtiger/import.data2
-rw-r--r--src/third_party/wiredtiger/src/reconcile/rec_write.c7
-rw-r--r--src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-8234100
3 files changed, 107 insertions, 2 deletions
diff --git a/src/third_party/wiredtiger/import.data b/src/third_party/wiredtiger/import.data
index 6be77fe2564..860f36beb69 100644
--- a/src/third_party/wiredtiger/import.data
+++ b/src/third_party/wiredtiger/import.data
@@ -2,5 +2,5 @@
"vendor": "wiredtiger",
"github": "wiredtiger/wiredtiger.git",
"branch": "mongodb-5.0",
- "commit": "05f01e412e34fa7f662026f53cb0fa9fff621a79"
+ "commit": "9a95edfe238515bfd3186a1fd3a416e6b62905d1"
}
diff --git a/src/third_party/wiredtiger/src/reconcile/rec_write.c b/src/third_party/wiredtiger/src/reconcile/rec_write.c
index f98444e9dc0..74ec3714443 100644
--- a/src/third_party/wiredtiger/src/reconcile/rec_write.c
+++ b/src/third_party/wiredtiger/src/reconcile/rec_write.c
@@ -192,7 +192,12 @@ __reconcile(WT_SESSION_IMPL *session, WT_REF *ref, WT_SALVAGE_COOKIE *salvage, u
WT_WITH_PAGE_INDEX(session, ret = __wt_rec_row_int(session, r, page));
break;
case WT_PAGE_ROW_LEAF:
- ret = __wt_rec_row_leaf(session, r, ref, salvage);
+ /*
+ * It's important we wrap this call in a page index guard, the ikey on the ref may still be
+ * pointing into the internal page's memory. We want to prevent eviction of the internal
+ * page for the duration.
+ */
+ WT_WITH_PAGE_INDEX(session, ret = __wt_rec_row_leaf(session, r, ref, salvage));
break;
default:
ret = __wt_illegal_value(session, page->type);
diff --git a/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-8234 b/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-8234
new file mode 100644
index 00000000000..aecb8d62fe2
--- /dev/null
+++ b/src/third_party/wiredtiger/test/format/failure_configs/CONFIG.WT-8234
@@ -0,0 +1,100 @@
+############################################
+# RUN PARAMETERS: V2
+############################################
+assert.read_timestamp=0
+assert.write_timestamp=0
+backup=0
+backup.incremental=off
+backup.incr_granularity=9466
+btree.bitcnt=2
+btree.compression=none
+btree.dictionary=0
+btree.huffman_value=0
+btree.internal_key_truncation=1
+btree.internal_page_max=16
+btree.key_max=34
+btree.key_min=27
+btree.leaf_page_max=15
+btree.memory_page_max=1
+btree.prefix_compression=1
+btree.prefix_compression_min=5
+btree.repeat_data_pct=10
+btree.reverse=0
+btree.split_pct=89
+btree.value_max=1228
+btree.value_min=14
+cache=20
+cache.evict_max=3
+cache.minimum=20
+checkpoint=on
+checkpoint.log_size=65
+checkpoint.wait=66
+disk.checksum=off
+disk.data_extend=0
+disk.direct_io=1
+disk.encryption=none
+disk.firstfit=0
+disk.mmap=1
+disk.mmap_all=0
+format.abort=0
+format.independent_thread_rng=1
+format.major_timeout=0
+import=0
+logging=0
+logging.archive=0
+logging.compression=none
+logging.file_max=79269
+logging.prealloc=0
+lsm.auto_throttle=1
+lsm.bloom=1
+lsm.bloom_bit_count=20
+lsm.bloom_hash_count=6
+lsm.bloom_oldest=0
+lsm.chunk_size=7
+lsm.merge_max=11
+lsm.worker_threads=4
+ops.alter=0
+ops.compaction=0
+ops.hs_cursor=0
+ops.pct.delete=5
+ops.pct.insert=1
+ops.pct.modify=51
+ops.pct.read=43
+ops.pct.write=0
+ops.prepare=0
+ops.random_cursor=0
+ops.salvage=0
+ops.truncate=1
+ops.verify=1
+quiet=1
+runs.in_memory=0
+runs.ops=0
+runs.rows=2600000
+runs.source=table
+runs.threads=4
+runs.timer=11
+runs.type=row-store
+runs.verify_failure_dump=0
+statistics=0
+statistics.server=0
+stress.aggressive_sweep=0
+stress.checkpoint=0
+stress.checkpoint_reserved_txnid_delay=0
+stress.checkpoint_prepare=0
+stress.failpoint_hs_delete_key_from_ts=0
+stress.hs_checkpoint_delay=0
+stress.hs_search=0
+stress.hs_sweep=0
+stress.split_1=0
+stress.split_2=0
+stress.split_3=0
+stress.split_4=0
+stress.split_5=0
+stress.split_6=0
+stress.split_7=0
+transaction.implicit=0
+transaction.timestamps=1
+wiredtiger.config=
+wiredtiger.rwlock=1
+wiredtiger.leak_memory=0
+############################################