After we checkpoint the history store we don't bump the checkpoint_generation. The checkpoint generation controls whether we include the checkpoint transaction in our calculations of the pinned and oldest_ids for a given btree.
But because we release the checkpoint_timestamp and checkpoint_txn_shared.pinned_id almost immediately after finishing checkpointing the history store as such it shouldn't have that big of an impact.
The fix should be:
diff --git a/src/txn/txn_ckpt.c b/src/txn/txn_ckpt.c index d9a15ed06..dd959c2eb 100644 --- a/src/txn/txn_ckpt.c +++ b/src/txn/txn_ckpt.c @@ -899,6 +899,7 @@ __txn_checkpoint(WT_SESSION_IMPL *session, const char *cfg[]) time_start_hs = __wt_clock(session); WT_WITH_DHANDLE(session, hs_dhandle, ret = __wt_checkpoint(session, cfg)); WT_ERR(ret); + __checkpoint_update_generation(session); time_stop_hs = __wt_clock(session); hs_ckpt_duration_usecs = WT_CLOCKDIFF_US(time_stop_hs, time_start_hs); WT_STAT_CONN_SET(session, txn_hs_ckpt_duration, hs_ckpt_duration_usecs);