diff options
author | Etienne Petrel <etienne.petrel@mongodb.com> | 2022-02-08 02:55:54 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-02-08 03:46:36 +0000 |
commit | c46dae708ae94adc2b015f5b6f8f44b31062fce4 (patch) | |
tree | d92a0d49f61d919c8b93c33936bd38fb245485be | |
parent | 5baf7b0bd11e4b893f1a3888d68143cff03c376f (diff) | |
download | mongo-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.data | 2 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/txn/txn_rollback_to_stable.c | 29 |
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); } |