mirror of
https://github.com/ceph/ceph
synced 2025-01-03 01:22:53 +00:00
mon: set_healthy_stretch_mode in update_from_paxos, not random leader calls!
Add header comment describing how this works now. Fixes: https://tracker.ceph.com/issues/50308 Signed-off-by: Greg Farnum <gfarnum@redhat.com>
This commit is contained in:
parent
73b461a4f3
commit
adbaeeec95
@ -6655,7 +6655,6 @@ void Monitor::go_recovery_stretch_mode()
|
||||
if (!osdmon()->is_writeable()) {
|
||||
osdmon()->wait_for_writeable_ctx(new CMonGoRecovery(this));
|
||||
}
|
||||
set_recovery_stretch_mode();
|
||||
osdmon()->trigger_recovery_stretch_mode();
|
||||
}
|
||||
|
||||
@ -6749,7 +6748,6 @@ void Monitor::trigger_healthy_stretch_mode()
|
||||
}
|
||||
|
||||
ceph_assert(osdmon()->osdmap.recovering_stretch_mode);
|
||||
set_healthy_stretch_mode();
|
||||
osdmon()->trigger_healthy_stretch_mode();
|
||||
monmon()->trigger_healthy_stretch_mode();
|
||||
}
|
||||
|
@ -266,6 +266,19 @@ public:
|
||||
bool is_stretch_mode() { return stretch_mode_engaged; }
|
||||
bool is_degraded_stretch_mode() { return degraded_stretch_mode; }
|
||||
bool is_recovering_stretch_mode() { return recovering_stretch_mode; }
|
||||
|
||||
/**
|
||||
* This set of functions maintains the in-memory stretch state
|
||||
* and sets up transitions of the map states by calling in to
|
||||
* MonmapMonitor and OSDMonitor.
|
||||
*
|
||||
* The [maybe_]go_* functions are called on the leader to
|
||||
* decide if transitions should happen; the trigger_* functions
|
||||
* set up the map transitions; and the set_* functions actually
|
||||
* change the memory state -- but these are only called
|
||||
* via OSDMonitor::update_from_paxos, to guarantee consistent
|
||||
* updates across the entire cluster.
|
||||
*/
|
||||
void try_engage_stretch_mode();
|
||||
void maybe_go_degraded_stretch_mode();
|
||||
void trigger_degraded_stretch_mode(const set<string>& dead_mons,
|
||||
|
@ -959,6 +959,8 @@ void OSDMonitor::update_from_paxos(bool *need_bootstrap)
|
||||
} else {
|
||||
mon.set_recovery_stretch_mode();
|
||||
}
|
||||
} else {
|
||||
mon.set_healthy_stretch_mode();
|
||||
}
|
||||
if (marked_osd_down &&
|
||||
(!osdmap.degraded_stretch_mode || osdmap.recovering_stretch_mode)) {
|
||||
|
Loading…
Reference in New Issue
Block a user