Bug #46535
openmds: Importer MDS failing right after EImportStart event is journaled, causes incorrect blacklisting of client session
0%
Description
An MDS hitting mds_kill_import_at = 7 (after EImportStart is journaled but before sending the ImportAck to the 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.
Updated by Sidharth Anupkrishnan almost 4 years ago
- Project changed from Ceph to CephFS
- Component(FS) MDS added
Updated by Patrick Donnelly over 3 years ago
- Status changed from New to In Progress
- Assignee set to Sidharth Anupkrishnan
- Target version set to v16.0.0
- Source set to Q/A
Updated by Patrick Donnelly over 3 years ago
- Target version changed from v16.0.0 to v17.0.0
- Backport set to pacific,octopus,nautilus