]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
mon/OSDMonitor: properly set last_force_op_resend in stretch mode 45871/head
authorIlya Dryomov <idryomov@gmail.com>
Tue, 29 Mar 2022 15:53:57 +0000 (17:53 +0200)
committerIlya Dryomov <idryomov@gmail.com>
Tue, 12 Apr 2022 08:49:08 +0000 (10:49 +0200)
commitd3ff20392b52cd3275d82772827062686cd0cee2
treec88113b01f0615c378b684fea06339c561a9fc7d
parente96a226f37d63a8274e2ee25c60dae1f3ab02f86
mon/OSDMonitor: properly set last_force_op_resend in stretch mode

Setting last_force_op_resend but not last_force_op_resend_prenautilus
and last_force_op_resend_preluminous doesn't make sense.  The reverse,
such as

  last_force_op_resend = 0
  last_force_op_resend_prenautilus = 0
  last_force_op_resend_preluminous = 20

or

  last_force_op_resend = 0
  last_force_op_resend_prenautilus = 40
  last_force_op_resend_preluminous = 40

is valid in PG split/merge cases (and is the reason prenautilus and
preluminous fields actually exist and aren't just encoding artifacts),
but, if last_force_op_resend is set, both prenautilus and preluminous
fields should really be set to the same value.  Otherwise it basically
amounts to "nautilus+ clients need to resend in-flight ops on stretch
mode transitions but pre-nautilus clients don't" which is bogus as it
leaves pre-nautilus clients exposed to the nastiness that necessitated
employing the force resend hammer in the first place in commit
97fbd19ccd02 ("osd: mon: account for stretch bucket configs/changes
when detecting intervals").

Fixes: https://tracker.ceph.com/issues/55158
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit 609a648e7eba69ee9d1f18685cc5a8e74994a750)
src/mon/OSDMonitor.cc