Project

General

Profile

Bug #46535

Updated by Sidharth Anupkrishnan over 3 years ago

An MDS hitting mds_kill_import_at = 7 (after ,i.e after EImportStart is journaled but before sending the ImportAck to the exporter), exporter, during import and subsequent taking over by a standby MDS causes will cause imported client session to be blacklisted. The reason for this is that before this killpoint (https://github.com/sidharthanup/ceph/blob/wip-multimdss-killpoint-test/src/mds/Migrator.cc#L3026) is hit, there is a prepare_force_open_sessions() method being called(https://github.com/sidharthanup/ceph/blob/wip-multimdss-killpoint-test/src/mds/Migrator.cc#L2699) in handle_export_dir() and this call marks a dirty open session which later gets persisted as
part of the journal event EImportStart. Now during journal replay of the new MDS, this information is relayed to the new MDS (during EImportStart::replay()) and the new MDS thinks that there is an open session with the client whereas in reality, that session was never really opened with the client. Now during up:reconnect, it tries to reconnect with the client and gets no response and ends up blacklisting the client.

We probably want to try to force open the dirty session during EImportStart replay.

Back