summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEtienne Petrel <etienne.petrel@mongodb.com>2022-02-08 02:55:54 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-02-08 03:46:36 +0000
commitc46dae708ae94adc2b015f5b6f8f44b31062fce4 (patch)
treed92a0d49f61d919c8b93c33936bd38fb245485be
parent5baf7b0bd11e4b893f1a3888d68143cff03c376f (diff)
downloadmongo-c46dae708ae94adc2b015f5b6f8f44b31062fce4.tar.gz
Import wiredtiger: b09aa97a7c08987df40c025ec1f6106b5dfd81b6 from branch mongodb-master
ref: a2bab860d3..b09aa97a7c for: 5.3.0 WT-8772 Print the RTS rolling back key in the verbose logs
-rw-r--r--src/third_party/wiredtiger/import.data2
-rw-r--r--src/third_party/wiredtiger/src/txn/txn_rollback_to_stable.c29
2 files changed, 27 insertions, 4 deletions
diff --git a/src/third_party/wiredtiger/import.data b/src/third_party/wiredtiger/import.data
index 19c734bf39e..9fb690320d3 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-master",
- "commit": "a2bab860d36b2d2a526380219c1dac4262343ed1"
+ "commit": "b09aa97a7c08987df40c025ec1f6106b5dfd81b6"
}
diff --git a/src/third_party/wiredtiger/src/txn/txn_rollback_to_stable.c b/src/third_party/wiredtiger/src/txn/txn_rollback_to_stable.c
index cfcc10e3a94..fad51be90e2 100644
--- a/src/third_party/wiredtiger/src/txn/txn_rollback_to_stable.c
+++ b/src/third_party/wiredtiger/src/txn/txn_rollback_to_stable.c
@@ -310,6 +310,7 @@ __rollback_ondisk_fixup_key(WT_SESSION_IMPL *session, WT_REF *ref, WT_ROW *rip,
WT_DECL_ITEM(hs_key);
WT_DECL_ITEM(hs_value);
WT_DECL_ITEM(key);
+ WT_DECL_ITEM(key_string);
WT_DECL_RET;
WT_PAGE *page;
WT_TIME_WINDOW *hs_tw;
@@ -357,6 +358,10 @@ __rollback_ondisk_fixup_key(WT_SESSION_IMPL *session, WT_REF *ref, WT_ROW *rip,
key->size = WT_PTRDIFF(memp, key->data);
}
+ WT_ERR(__wt_scr_alloc(session, 0, &key_string));
+ __wt_verbose_multi(session, WT_VERB_RECOVERY_RTS(session), "rolling back the on-disk key: %s",
+ __wt_key_string(session, key->data, key->size, S2BT(session)->key_format, key_string));
+
WT_ERR(__wt_scr_alloc(session, 0, &full_value));
WT_ERR(__wt_page_cell_data_ref(session, page, unpack, full_value));
WT_ERR(__wt_buf_set(session, full_value, full_value->data, full_value->size));
@@ -591,7 +596,7 @@ __rollback_ondisk_fixup_key(WT_SESSION_IMPL *session, WT_REF *ref, WT_ROW *rip,
} else {
WT_ERR(__wt_upd_alloc_tombstone(session, &upd, NULL));
WT_STAT_CONN_DATA_INCR(session, txn_rts_keys_removed);
- __wt_verbose_multi(session, WT_VERB_RECOVERY_RTS(session), "%p: key removed", (void *)key);
+ __wt_verbose_multi(session, WT_VERB_RECOVERY_RTS(session), "%s", "key removed");
}
if (rip != NULL)
@@ -619,6 +624,7 @@ err:
__wt_scr_free(session, &hs_value);
if (rip == NULL || row_key == NULL)
__wt_scr_free(session, &key);
+ __wt_scr_free(session, &key_string);
if (hs_cursor != NULL)
WT_TRET(hs_cursor->close(hs_cursor));
return (ret);
@@ -634,10 +640,12 @@ __rollback_abort_ondisk_kv(WT_SESSION_IMPL *session, WT_REF *ref, WT_ROW *rip, u
bool *is_ondisk_stable)
{
WT_DECL_ITEM(key);
+ WT_DECL_ITEM(key_string);
WT_DECL_ITEM(tmp);
WT_DECL_RET;
WT_PAGE *page;
WT_UPDATE *upd;
+ uint8_t *memp;
char ts_string[5][WT_TS_INT_STRING_SIZE];
bool prepared;
@@ -766,16 +774,31 @@ __rollback_abort_ondisk_kv(WT_SESSION_IMPL *session, WT_REF *ref, WT_ROW *rip, u
WT_ERR(__wt_scr_alloc(session, 0, &key));
WT_ERR(__wt_row_leaf_key(session, page, rip, key, false));
}
+ } else {
+ /* Manufacture a column key. */
+ WT_ERR(__wt_scr_alloc(session, WT_INTPACK64_MAXSIZE, &key));
+ memp = key->mem;
+ WT_ERR(__wt_vpack_uint(&memp, 0, recno));
+ key->size = WT_PTRDIFF(memp, key->data);
+ }
+
+ WT_ERR(__wt_scr_alloc(session, 0, &key_string));
+ __wt_verbose_multi(session, WT_VERB_RECOVERY_RTS(session), "removing the key%s: %s",
+ upd->type == WT_UPDATE_TOMBSTONE ? "" : " tombstone",
+ __wt_key_string(session, key->data, key->size, S2BT(session)->key_format, key_string));
+
+ if (rip != NULL)
WT_ERR(__rollback_row_modify(session, ref, upd, key));
- } else
+ else
WT_ERR(__rollback_col_modify(session, ref, upd, recno));
if (0) {
err:
__wt_free(session, upd);
}
- if (rip != NULL && row_key == NULL)
+ if (rip == NULL || row_key == NULL)
__wt_scr_free(session, &key);
+ __wt_scr_free(session, &key_string);
return (ret);
}