]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commit
mon: fix mds metadata lost in one case.
authorshimin <shimin@kuaishou.com>
Sun, 8 Oct 2023 11:15:09 +0000 (19:15 +0800)
committerPatrick Donnelly <pdonnell@redhat.com>
Mon, 13 Nov 2023 13:36:57 +0000 (08:36 -0500)
commitcbb7bf0274bbdad8658c306fbf775fe1898065be
treeab0f6875471817383bb98c2d1fad57c48f6799c9
parent350d32523296b9d07eb1c7fd39472f61e2daad1c
mon: fix mds metadata lost in one case.

In most cases, peon's pending_metadata is inconsistent with mon's db.
When a peon turns into leader, and at the same time a active mds stops,
the new leader may flush wrong mds metadata into db. So we meed to
update mds metadata from db at every fsmap change.

This phenomenon can be reproduce like this:
A Cluster with 3 mon and 3 mds (one active, other two standby), 6 osd.
step 1. stop two standby mds;
step 2. restart all mon; (make pending_medata consistent with db)
step 3. start other two mds
step 4. stop leader mon
step 5. run "ceph mds metadata" command to check mds metadata
step 6. stop active mds
step 7. run "ceph mds metadata" command to check mds metadata again

In step 7, we would find mds metadata lost.

Fixes: https://tracker.ceph.com/issues/63166
Signed-off-by: shimin <shimin@kuaishou.com>
(cherry picked from commit 56cbf3f0716b556c815487d719abe86021125925)
src/mon/MDSMonitor.cc