summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Chen <luke.chen@mongodb.com>2020-04-09 14:39:22 +1000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-04-09 04:59:48 +0000
commitc6a6e086082e42e6cbb4fe466e75a883714df877 (patch)
treed8ca6e23bc871f81c2da54e5257370fcc8405fa5
parentf6aa02a52d2ca5926fc142e7c421ce842553b2a5 (diff)
downloadmongo-c6a6e086082e42e6cbb4fe466e75a883714df877.tar.gz
Import wiredtiger: 2a9cabc3100088666ae5b1e9f430bcfd1c6172f4 from branch mongodb-4.2
ref: 070699625d..2a9cabc310 for: 4.2.6 WT-5966 4.4 downgrade can result in 4.2 core dumps if cells are ignored
-rw-r--r--src/third_party/wiredtiger/import.data2
-rw-r--r--src/third_party/wiredtiger/src/btree/bt_handle.c24
-rw-r--r--src/third_party/wiredtiger/src/btree/bt_page.c94
-rw-r--r--src/third_party/wiredtiger/src/conn/conn_api.c1
-rw-r--r--src/third_party/wiredtiger/src/include/cell.h1
-rw-r--r--src/third_party/wiredtiger/src/include/cell.i67
-rw-r--r--src/third_party/wiredtiger/src/include/connection.h2
-rw-r--r--src/third_party/wiredtiger/src/include/extern.h1
-rw-r--r--src/third_party/wiredtiger/src/include/reconcile.i14
-rw-r--r--src/third_party/wiredtiger/src/reconcile/rec_col.c22
-rw-r--r--src/third_party/wiredtiger/src/reconcile/rec_row.c16
-rw-r--r--src/third_party/wiredtiger/src/reconcile/rec_write.c3
12 files changed, 128 insertions, 119 deletions
diff --git a/src/third_party/wiredtiger/import.data b/src/third_party/wiredtiger/import.data
index 1cc34a69cab..eedce57dc92 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-4.2",
- "commit": "070699625d32ab31ed553697339e698075faf3fd"
+ "commit": "2a9cabc3100088666ae5b1e9f430bcfd1c6172f4"
}
diff --git a/src/third_party/wiredtiger/src/btree/bt_handle.c b/src/third_party/wiredtiger/src/btree/bt_handle.c
index ebaebc84a01..c7865c4eeab 100644
--- a/src/third_party/wiredtiger/src/btree/bt_handle.c
+++ b/src/third_party/wiredtiger/src/btree/bt_handle.c
@@ -15,30 +15,6 @@ static int __btree_preload(WT_SESSION_IMPL *);
static int __btree_tree_open_empty(WT_SESSION_IMPL *, bool);
/*
- * __wt_btree_page_version_config --
- * Select a Btree page format.
- */
-void
-__wt_btree_page_version_config(WT_SESSION_IMPL *session)
-{
- WT_CONNECTION_IMPL *conn;
-
- conn = S2C(session);
-
-/*
- * Write timestamp format pages if at the right version or if configured at build-time.
- *
- * The timestamp page format is written starting with WiredTiger version 10.0.0. We need only
- * compare the major version as the minor version is zero.
- */
-#define WT_VERSION_TS_MAJOR 10
- __wt_process.page_version_ts = conn->compat_major >= WT_VERSION_TS_MAJOR;
-#if defined(HAVE_PAGE_VERSION_TS)
- __wt_process.page_version_ts = true;
-#endif
-}
-
-/*
* __btree_clear --
* Clear a Btree, either on handle discard or re-open.
*/
diff --git a/src/third_party/wiredtiger/src/btree/bt_page.c b/src/third_party/wiredtiger/src/btree/bt_page.c
index 8bb8c7f1894..1402e772dca 100644
--- a/src/third_party/wiredtiger/src/btree/bt_page.c
+++ b/src/third_party/wiredtiger/src/btree/bt_page.c
@@ -10,9 +10,9 @@
static void __inmem_col_fix(WT_SESSION_IMPL *, WT_PAGE *);
static void __inmem_col_int(WT_SESSION_IMPL *, WT_PAGE *);
-static int __inmem_col_var(WT_SESSION_IMPL *, WT_PAGE *, uint64_t, size_t *, bool);
+static int __inmem_col_var(WT_SESSION_IMPL *, WT_PAGE *, uint64_t, size_t *);
static int __inmem_row_int(WT_SESSION_IMPL *, WT_PAGE *, size_t *);
-static int __inmem_row_leaf(WT_SESSION_IMPL *, WT_PAGE *, bool);
+static int __inmem_row_leaf(WT_SESSION_IMPL *, WT_PAGE *, size_t *, bool);
static int __inmem_row_leaf_entries(WT_SESSION_IMPL *, const WT_PAGE_HEADER *, uint32_t *);
/*
@@ -206,13 +206,13 @@ __wt_page_inmem(WT_SESSION_IMPL *session, WT_REF *ref, const void *image, uint32
__inmem_col_int(session, page);
break;
case WT_PAGE_COL_VAR:
- WT_ERR(__inmem_col_var(session, page, dsk->recno, &size, check_unstable));
+ WT_ERR(__inmem_col_var(session, page, dsk->recno, &size));
break;
case WT_PAGE_ROW_INT:
WT_ERR(__inmem_row_int(session, page, &size));
break;
case WT_PAGE_ROW_LEAF:
- WT_ERR(__inmem_row_leaf(session, page, check_unstable));
+ WT_ERR(__inmem_row_leaf(session, page, &size, check_unstable));
break;
default:
WT_ERR(__wt_illegal_value(session, page->type));
@@ -313,36 +313,11 @@ __inmem_col_var_repeats(WT_SESSION_IMPL *session, WT_PAGE *page, uint32_t *np)
}
/*
- * __unstable_skip --
- * Optionally skip unstable entries
- */
-static inline bool
-__unstable_skip(WT_SESSION_IMPL *session, const WT_PAGE_HEADER *dsk, WT_CELL_UNPACK *unpack)
-{
- /*
- * We should never see a prepared cell, it implies an unclean shutdown followed by a downgrade
- * (clean shutdown rolls back any prepared cells). Complain and ignore the row.
- */
- if (F_ISSET(unpack, WT_CELL_UNPACK_PREPARE)) {
- __wt_err(session, EINVAL, "unexpected prepared cell found, ignored");
- return (true);
- }
-
- /*
- * Skip unstable entries after downgrade to releases without validity windows and from previous
- * wiredtiger_open connections.
- */
- return ((unpack->stop_ts != WT_TS_MAX || unpack->stop_txn != WT_TXN_MAX) &&
- (S2C(session)->base_write_gen > dsk->write_gen || !__wt_process.page_version_ts));
-}
-
-/*
* __inmem_col_var --
* Build in-memory index for variable-length, data-only leaf pages in column-store trees.
*/
static int
-__inmem_col_var(
- WT_SESSION_IMPL *session, WT_PAGE *page, uint64_t recno, size_t *sizep, bool check_unstable)
+__inmem_col_var(WT_SESSION_IMPL *session, WT_PAGE *page, uint64_t recno, size_t *sizep)
{
WT_BTREE *btree;
WT_CELL_UNPACK unpack;
@@ -366,12 +341,6 @@ __inmem_col_var(
indx = 0;
cip = page->pg_var;
WT_CELL_FOREACH_BEGIN (session, btree, page->dsk, unpack) {
- /* Optionally skip unstable values */
- if (check_unstable && __unstable_skip(session, page->dsk, &unpack)) {
- --page->entries;
- continue;
- }
-
WT_COL_PTR_SET(cip, WT_PAGE_DISK_OFFSET(page, unpack.cell));
cip++;
@@ -554,11 +523,47 @@ __inmem_row_leaf_entries(WT_SESSION_IMPL *session, const WT_PAGE_HEADER *dsk, ui
}
/*
+ * __inmem_row_leaf_tombstone --
+ * Add row-store tombstones required by 4.4 downgrade. (Similar code is not included for
+ * column-store, MongoDB does not use the column-store functionality.)
+ */
+static int
+__inmem_row_leaf_tombstone(WT_SESSION_IMPL *session, WT_PAGE *page, WT_ROW *rip, size_t *sizep)
+{
+ WT_BTREE *btree;
+ WT_UPDATE **upd_array, *upd;
+
+ btree = S2BT(session);
+
+ /*
+ * Give the page a modify structure and allocate the per-page update array if this is the first
+ * tombstone seen.
+ *
+ * Mark tree dirty, unless the handle is read-only. We'd like to discard the tombstones, but if
+ * the handle is read-only, we're not able to do so.)
+ */
+ if (page->modify == NULL) {
+ WT_RET(__wt_page_modify_init(session, page));
+ if (!F_ISSET(btree, WT_BTREE_READONLY))
+ __wt_page_modify_set(session, page);
+ WT_RET(__wt_calloc_def(session, page->entries, &page->modify->mod_row_update));
+ }
+
+ /* Cleared memory matches the lowest possible transaction ID and timestamp, do nothing. */
+ WT_RET(__wt_update_alloc(session, NULL, &upd, sizep, WT_UPDATE_TOMBSTONE));
+ upd_array = page->modify->mod_row_update;
+ upd->next = upd_array[WT_ROW_SLOT(page, rip)];
+ upd_array[WT_ROW_SLOT(page, rip)] = upd;
+
+ return (0);
+}
+
+/*
* __inmem_row_leaf --
* Build in-memory index for row-store leaf pages.
*/
static int
-__inmem_row_leaf(WT_SESSION_IMPL *session, WT_PAGE *page, bool check_unstable)
+__inmem_row_leaf(WT_SESSION_IMPL *session, WT_PAGE *page, size_t *sizep, bool check_unstable)
{
WT_BTREE *btree;
WT_CELL_UNPACK unpack;
@@ -586,25 +591,18 @@ __inmem_row_leaf(WT_SESSION_IMPL *session, WT_PAGE *page, bool check_unstable)
++rip;
break;
case WT_CELL_VALUE:
- /* Optionally skip unstable values */
- if (check_unstable && __unstable_skip(session, page->dsk, &unpack)) {
- --rip;
- --page->entries;
- }
-
/*
* Simple values without compression can be directly referenced on the page to avoid
* repeatedly unpacking their cells.
*/
if (!btree->huffman_value)
__wt_row_leaf_value_set(page, rip - 1, &unpack);
- break;
+
+ /* FALLTHROUGH */
case WT_CELL_VALUE_OVFL:
/* Optionally skip unstable values */
- if (check_unstable && __unstable_skip(session, page->dsk, &unpack)) {
- --rip;
- --page->entries;
- }
+ if (F_ISSET(&unpack, WT_CELL_UNPACK_TOMBSTONE) && check_unstable)
+ WT_RET(__inmem_row_leaf_tombstone(session, page, rip - 1, sizep));
break;
default:
return (__wt_illegal_value(session, unpack.type));
diff --git a/src/third_party/wiredtiger/src/conn/conn_api.c b/src/third_party/wiredtiger/src/conn/conn_api.c
index 65580de7a7b..67b213e85f9 100644
--- a/src/third_party/wiredtiger/src/conn/conn_api.c
+++ b/src/third_party/wiredtiger/src/conn/conn_api.c
@@ -2491,7 +2491,6 @@ wiredtiger_open(const char *home, WT_EVENT_HANDLER *event_handler, const char *c
}
WT_ERR(__wt_verbose_config(session, cfg));
WT_ERR(__wt_timing_stress_config(session, cfg));
- __wt_btree_page_version_config(session);
/* Set up operation tracking if configured. */
WT_ERR(__wt_conn_optrack_setup(session, cfg, false));
diff --git a/src/third_party/wiredtiger/src/include/cell.h b/src/third_party/wiredtiger/src/include/cell.h
index 782e2105ce2..3651284391c 100644
--- a/src/third_party/wiredtiger/src/include/cell.h
+++ b/src/third_party/wiredtiger/src/include/cell.h
@@ -188,6 +188,7 @@ struct __wt_cell_unpack {
#define WT_CELL_UNPACK_OVERFLOW 0x1u /* cell is an overflow */
#define WT_CELL_UNPACK_PREPARE 0x2u /* cell is part of a prepared transaction */
#define WT_CELL_UNPACK_TIME_PAIRS_CLEARED 0x4u /* time pairs are cleared because of restart */
+#define WT_CELL_UNPACK_TOMBSTONE 0x8u /* cell is never visible */
/* AUTOMATIC FLAG VALUE GENERATION STOP */
uint8_t flags;
diff --git a/src/third_party/wiredtiger/src/include/cell.i b/src/third_party/wiredtiger/src/include/cell.i
index 91815677dd0..f9a1485718a 100644
--- a/src/third_party/wiredtiger/src/include/cell.i
+++ b/src/third_party/wiredtiger/src/include/cell.i
@@ -64,12 +64,12 @@ __cell_pack_value_validity(WT_SESSION_IMPL *session, uint8_t **pp, wt_timestamp_
wt_timestamp_t start_ts, uint64_t start_txn, wt_timestamp_t durable_stop_ts,
wt_timestamp_t stop_ts, uint64_t stop_txn, bool prepare)
{
+#ifdef MONGODB44_WITH_TIMESTAMP_PAGE_FORMAT
uint8_t flags, *flagsp;
- /* Historic page versions and globally visible values have no associated validity window. */
- if (!__wt_process.page_version_ts ||
- (durable_start_ts == WT_TS_NONE && start_ts == WT_TS_NONE && start_txn == WT_TXN_NONE &&
- durable_stop_ts == WT_TS_NONE && stop_ts == WT_TS_MAX && stop_txn == WT_TXN_MAX)) {
+ /* Globally visible values have no associated validity window. */
+ if (durable_start_ts == WT_TS_NONE && start_ts == WT_TS_NONE && start_txn == WT_TXN_NONE &&
+ durable_stop_ts == WT_TS_NONE && stop_ts == WT_TS_MAX && stop_txn == WT_TXN_MAX) {
++*pp;
return;
}
@@ -120,6 +120,18 @@ __cell_pack_value_validity(WT_SESSION_IMPL *session, uint8_t **pp, wt_timestamp_
if (prepare)
LF_SET(WT_CELL_PREPARE);
*flagsp = flags;
+#else
+ WT_UNUSED(session);
+ WT_UNUSED(durable_start_ts);
+ WT_UNUSED(start_ts);
+ WT_UNUSED(start_txn);
+ WT_UNUSED(durable_stop_ts);
+ WT_UNUSED(stop_ts);
+ WT_UNUSED(stop_txn);
+ WT_UNUSED(prepare);
+
+ ++*pp;
+#endif
}
/*
@@ -180,13 +192,13 @@ __cell_pack_addr_validity(WT_SESSION_IMPL *session, uint8_t **pp, wt_timestamp_t
wt_timestamp_t oldest_start_ts, uint64_t oldest_start_txn, wt_timestamp_t stop_durable_ts,
wt_timestamp_t newest_stop_ts, uint64_t newest_stop_txn)
{
+#ifdef MONGODB44_WITH_TIMESTAMP_PAGE_FORMAT
uint8_t flags, *flagsp;
- /* Historic page versions and globally visible values have no associated validity window. */
- if (!__wt_process.page_version_ts ||
- (start_durable_ts == WT_TS_NONE && stop_durable_ts == WT_TS_NONE &&
- oldest_start_ts == WT_TS_NONE && oldest_start_txn == WT_TXN_NONE &&
- newest_stop_ts == WT_TS_MAX && newest_stop_txn == WT_TXN_MAX)) {
+ /* Globally visible values have no associated validity window. */
+ if (start_durable_ts == WT_TS_NONE && stop_durable_ts == WT_TS_NONE &&
+ oldest_start_ts == WT_TS_NONE && oldest_start_txn == WT_TXN_NONE &&
+ newest_stop_ts == WT_TS_MAX && newest_stop_txn == WT_TXN_MAX) {
++*pp;
return;
}
@@ -253,6 +265,17 @@ __cell_pack_addr_validity(WT_SESSION_IMPL *session, uint8_t **pp, wt_timestamp_t
LF_SET(WT_CELL_TS_DURABLE_STOP);
}
*flagsp = flags;
+#else
+ WT_UNUSED(session);
+ WT_UNUSED(start_durable_ts);
+ WT_UNUSED(oldest_start_ts);
+ WT_UNUSED(oldest_start_txn);
+ WT_UNUSED(stop_durable_ts);
+ WT_UNUSED(newest_stop_ts);
+ WT_UNUSED(newest_stop_txn);
+
+ ++*pp;
+#endif
}
/*
@@ -734,6 +757,29 @@ __wt_cell_leaf_value_parse(WT_PAGE *page, WT_CELL *cell)
}
/*
+ * __unstable_skip --
+ * Optionally skip unstable entries in the MongoDB 4.2 release.
+ */
+static inline bool
+__unstable_skip(WT_SESSION_IMPL *session, WT_CELL_UNPACK *unpack)
+{
+ /*
+ * We should never see a prepared cell, it implies an unclean shutdown followed by a downgrade
+ * (clean shutdown rolls back any prepared cells). Complain and ignore the row.
+ */
+ if (F_ISSET(unpack, WT_CELL_UNPACK_PREPARE)) {
+ __wt_err(session, EINVAL, "unexpected prepared cell found, ignored");
+ return (true);
+ }
+
+ /*
+ * Skip unstable entries after downgrade to releases without validity windows and from previous
+ * wiredtiger_open connections.
+ */
+ return (unpack->stop_ts != WT_TS_MAX || unpack->stop_txn != WT_TXN_MAX);
+}
+
+/*
* __wt_cell_unpack_safe --
* Unpack a WT_CELL into a structure, with optional boundary checks.
*/
@@ -1011,6 +1057,9 @@ restart:
return (WT_ERROR); /* Unknown cell type. */
}
+ if (__unstable_skip(session, unpack))
+ F_SET(unpack, WT_CELL_UNPACK_TOMBSTONE);
+
/*
* Check the original cell against the full cell length (this is a diagnostic as well, we may be
* copying the cell from the page and we need the right length).
diff --git a/src/third_party/wiredtiger/src/include/connection.h b/src/third_party/wiredtiger/src/include/connection.h
index 54d1213173a..1bed17bad88 100644
--- a/src/third_party/wiredtiger/src/include/connection.h
+++ b/src/third_party/wiredtiger/src/include/connection.h
@@ -19,8 +19,6 @@ struct __wt_process {
/* Locked: connection queue */
TAILQ_HEAD(__wt_connection_impl_qh, __wt_connection_impl) connqh;
- bool page_version_ts; /* timestamp version page formats */
-
/* Checksum functions */
#define __wt_checksum(chunk, len) __wt_process.checksum(chunk, len)
uint32_t (*checksum)(const void *, size_t);
diff --git a/src/third_party/wiredtiger/src/include/extern.h b/src/third_party/wiredtiger/src/include/extern.h
index 595d3fddf92..6f686251363 100644
--- a/src/third_party/wiredtiger/src/include/extern.h
+++ b/src/third_party/wiredtiger/src/include/extern.h
@@ -1586,7 +1586,6 @@ extern void __wt_btcur_init(WT_SESSION_IMPL *session, WT_CURSOR_BTREE *cbt);
extern void __wt_btcur_iterate_setup(WT_CURSOR_BTREE *cbt);
extern void __wt_btcur_open(WT_CURSOR_BTREE *cbt);
extern void __wt_btree_huffman_close(WT_SESSION_IMPL *session);
-extern void __wt_btree_page_version_config(WT_SESSION_IMPL *session);
extern void __wt_cache_stats_update(WT_SESSION_IMPL *session);
extern void __wt_capacity_throttle(WT_SESSION_IMPL *session, uint64_t bytes, WT_THROTTLE_TYPE type);
extern void __wt_checkpoint_progress(WT_SESSION_IMPL *session, bool closing);
diff --git a/src/third_party/wiredtiger/src/include/reconcile.i b/src/third_party/wiredtiger/src/include/reconcile.i
index 955d43c289d..722545767a5 100644
--- a/src/third_party/wiredtiger/src/include/reconcile.i
+++ b/src/third_party/wiredtiger/src/include/reconcile.i
@@ -47,6 +47,8 @@ __wt_rec_addr_ts_init(WT_RECONCILE *r, wt_timestamp_t *newest_durable_ts,
wt_timestamp_t *oldest_start_tsp, uint64_t *oldest_start_txnp, wt_timestamp_t *newest_stop_tsp,
uint64_t *newest_stop_txnp)
{
+ WT_UNUSED(r);
+
/*
* If the page format supports address timestamps (and not fixed-length column-store, where we
* don't maintain timestamps at all), set the oldest/newest timestamps to values at the end of
@@ -58,13 +60,11 @@ __wt_rec_addr_ts_init(WT_RECONCILE *r, wt_timestamp_t *newest_durable_ts,
*oldest_start_txnp = WT_TXN_MAX;
*newest_stop_tsp = WT_TS_NONE;
*newest_stop_txnp = WT_TXN_NONE;
- if (!__wt_process.page_version_ts || r->page->type == WT_PAGE_COL_FIX) {
- *newest_durable_ts = WT_TS_NONE;
- *oldest_start_tsp = WT_TS_NONE;
- *oldest_start_txnp = WT_TXN_NONE;
- *newest_stop_tsp = WT_TS_MAX;
- *newest_stop_txnp = WT_TXN_MAX;
- }
+ *newest_durable_ts = WT_TS_NONE;
+ *oldest_start_tsp = WT_TS_NONE;
+ *oldest_start_txnp = WT_TXN_NONE;
+ *newest_stop_tsp = WT_TS_MAX;
+ *newest_stop_txnp = WT_TXN_MAX;
}
/*
diff --git a/src/third_party/wiredtiger/src/reconcile/rec_col.c b/src/third_party/wiredtiger/src/reconcile/rec_col.c
index 3dcce6c8c36..7538d0d8da6 100644
--- a/src/third_party/wiredtiger/src/reconcile/rec_col.c
+++ b/src/third_party/wiredtiger/src/reconcile/rec_col.c
@@ -880,12 +880,9 @@ compare:
* record number, we've been doing that all along.
*/
if (rle != 0) {
- if ((!__wt_process.page_version_ts ||
- (last.start_ts == start_ts && last.start_txn == start_txn &&
- last.stop_ts == stop_ts && last.stop_txn == stop_txn)) &&
- ((deleted && last.deleted) ||
- (!deleted && !last.deleted && last.value->size == size &&
- memcmp(last.value->data, data, size) == 0))) {
+ if ((deleted && last.deleted) ||
+ (!deleted && !last.deleted && last.value->size == size &&
+ memcmp(last.value->data, data, size) == 0)) {
rle += repeat_count;
continue;
}
@@ -994,9 +991,7 @@ compare:
*/
if (src_recno < n) {
deleted = true;
- if (last.deleted && (!__wt_process.page_version_ts ||
- (last.start_ts == start_ts && last.start_txn == start_txn &&
- last.stop_ts == stop_ts && last.stop_txn == stop_txn))) {
+ if (last.deleted) {
/*
* The record adjustment is decremented by one so we can naturally fall into the
* RLE accounting below, where we increment rle by one, then continue in the
@@ -1053,12 +1048,9 @@ compare:
* the same thing.
*/
if (rle != 0) {
- if ((!__wt_process.page_version_ts ||
- (last.start_ts == start_ts && last.start_txn == start_txn &&
- last.stop_ts == stop_ts && last.stop_txn == stop_txn)) &&
- ((deleted && last.deleted) ||
- (!deleted && !last.deleted && last.value->size == size &&
- memcmp(last.value->data, data, size) == 0))) {
+ if ((deleted && last.deleted) ||
+ (!deleted && !last.deleted && last.value->size == size &&
+ memcmp(last.value->data, data, size) == 0)) {
++rle;
goto next;
}
diff --git a/src/third_party/wiredtiger/src/reconcile/rec_row.c b/src/third_party/wiredtiger/src/reconcile/rec_row.c
index bc24c661b27..e5ab6910b9f 100644
--- a/src/third_party/wiredtiger/src/reconcile/rec_row.c
+++ b/src/third_party/wiredtiger/src/reconcile/rec_row.c
@@ -531,16 +531,14 @@ static bool
__rec_row_zero_len(WT_SESSION_IMPL *session, wt_timestamp_t start_ts, uint64_t start_txn,
wt_timestamp_t stop_ts, uint64_t stop_txn)
{
- /* Before timestamps were stored on pages, it was always possible. */
- if (!__wt_process.page_version_ts)
- return (true);
+ WT_UNUSED(session);
+ WT_UNUSED(start_ts);
+ WT_UNUSED(start_txn);
+ WT_UNUSED(stop_ts);
+ WT_UNUSED(stop_txn);
- /*
- * The item must be globally visible because we're not writing anything on the page.
- */
- return ((stop_ts == WT_TS_MAX && stop_txn == WT_TXN_MAX) &&
- ((start_ts == WT_TS_NONE && start_txn == WT_TXN_NONE) ||
- __wt_txn_visible_all(session, start_txn, start_ts)));
+ /* Before timestamps were stored on pages, it was always possible. */
+ return (true);
}
/*
diff --git a/src/third_party/wiredtiger/src/reconcile/rec_write.c b/src/third_party/wiredtiger/src/reconcile/rec_write.c
index 3911ff2f1ea..62d480bb02f 100644
--- a/src/third_party/wiredtiger/src/reconcile/rec_write.c
+++ b/src/third_party/wiredtiger/src/reconcile/rec_write.c
@@ -1653,8 +1653,7 @@ __rec_split_write_header(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_REC_CHUNK
F_SET(dsk, WT_PAGE_LAS_UPDATE);
dsk->unused = 0;
-
- dsk->version = __wt_process.page_version_ts ? WT_PAGE_VERSION_TS : WT_PAGE_VERSION_ORIG;
+ dsk->version = WT_PAGE_VERSION_ORIG;
/* Clear the memory owned by the block manager. */
memset(WT_BLOCK_HEADER_REF(dsk), 0, btree->block_header);