mds: handle discontinuous mdsmap
There are two cases that a mds can get discontinuous mdsmap:
- the mdsmap was sent by other mds
- connection to monitor was reset
Monitor does not preserve old version mdsmap. There is no easy way to
ensure mds always gets continuous mdsmap. Instead, making mds handle
discontinuous mdsmap is not difficult. When failover happens in multimds
cluster, survivor mds may miss the mdsmap that indicates old mds failed
and/or the mdsmap that indicates new mds started to replay. But the
survivor mds always get the mdsmap that indicates the new mds entered
resolve state.
Fixes: http://tracker.ceph.com/issues/24856
Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
(cherry picked from commit
7de9da4a43914082eea0a1f9c8b98ce285e873ef)
Conflicts:
src/mds/MDSRank.cc