]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
osd: peering: detect when log source osd goes down
authorSage Weil <sage@inktank.com>
Tue, 31 Jul 2012 21:01:57 +0000 (14:01 -0700)
committerYehuda Sadeh <yehuda@inktank.com>
Thu, 2 Aug 2012 00:17:29 +0000 (17:17 -0700)
commit0d3d75ec0d17e2f6bc5d42058f51eb2ff19ffb71
tree78288577a994b2f2169f58eb2d2a7a93f6efaeb1
parentca2c381380fe83ae56c6ffdde3c775e9adf65a1f
osd: peering: detect when log source osd goes down

The Peering state has a generic check based on the prior set osds that
will restart peering if one of them goes down (or one of the interesting
down ones comes up).  The GetLog state, however, can pull the log from
a peer that is not in the prior set if it got a notify from them (e.g., an
osd in an old interval that was down when the prior set was calculated).
If that osd goes down, we don't detect it and will block forward.

Fix by adding a simple check in GetLog for the newest_update_osd going
down.

(BTW GetMissing does not suffer from this problem because
peer_missing_requested is a subset of the prior set, so the Peering check
is sufficient.)

Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Samuel Just <sam.just@inktank.com>
src/osd/PG.cc