Both recv_parse_or_apply_log_rec_body() callers need to execute MLOG_FILE_RENAME, actually the recv_parse_log_rec() even more so, as it is called during the initial log parsing, which must, among the other things, set up the data dictionary etc. so that the right pages are read and recovered later. Later is when the other caller recv_recover_page_func() is called, with records gathered for that page. MLOG_FILE_RENAME should be absent among them.
The easiest fix is to adjust recv_parse_or_apply_log_rec_body() to pass "recv_recovery_is_on() ? space_id : 0" instead of space_id to the fil_op_log_parse_or_replay() call.
Hartmut -
Both recv_parse_ or_apply_ log_rec_ body() callers need to execute MLOG_FILE_RENAME, actually the recv_parse_ log_rec( ) even more so, as it is called during the initial log parsing, which must, among the other things, set up the data dictionary etc. so that the right pages are read and recovered later. Later is when the other caller recv_recover_ page_func( ) is called, with records gathered for that page. MLOG_FILE_RENAME should be absent among them.
The easiest fix is to adjust recv_parse_ or_apply_ log_rec_ body() to pass "recv_recovery_ is_on() ? space_id : 0" instead of space_id to the fil_op_ log_parse_ or_replay( ) call.