During recovery, __recovery_file_scan (txn_recover.c line 976) calls __recovery_metadata_scan_prefix three times to scan the metadata. The two calls for "file:" and "tiered:" prefixes correctly wrap the return value with WT_RET. The call for the "table:" prefix (line 982), which invokes __metadata_clean_incomplete_table, does not. If the cleanup fails for any reason, for example, __wt_schema_drop returning an error or a config parse failure the non-zero return value is silently discarded and recovery proceeds as if nothing went wrong.
For ReProduce;
A csuite test (test_wt<this wt number(I added the WT number later, after this issue was opened>_txn_recovery_error) reproduces the bug and verifies the fix (I attached the before/after outputs on JIRA).
Without the fix, wiredtiger_open returns 0 despite the cleanup failure and the incomplete
metadata entry persists. With the fix, wiredtiger_open correctly returns an error.
Proposed Fix;
The fix is a one-line change wrap the call with WT_RET(), consistent with the two calls that follow it on lines 991-992.