]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
osd/OSD: ping monitor if we are stuck at __waiting_for_healthy__ 23958/head
authorxie xingguo <xie.xingguo@zte.com.cn>
Thu, 6 Sep 2018 11:20:01 +0000 (19:20 +0800)
committerxie xingguo <xie.xingguo@zte.com.cn>
Fri, 7 Sep 2018 01:00:59 +0000 (09:00 +0800)
commitb6c0eeaebb54188759bec43e05119ad4d166b9e8
tree447f0eef6d6639e8adf0a9f888207705c245979f
parent7a8ed0fe2c78bf3043c39b71c2de168fbc58aa7e
osd/OSD: ping monitor if we are stuck at __waiting_for_healthy__

One of our clusters has encountered some network issues several days
ago and we've observed some OSDs were stuck at __waiting_for_healthy__
with an obsolete OSDMap(683) in hand(By contrast, the newest OSDMap
from the monitor side has been successfully bumped up to 1589):

```
2018-08-28 15:26:54.858892 7faa3869c700  1 osd.31 683 is_healthy false -- only 1/5 up peers (less than 33%)
2018-08-28 15:26:54.858909 7faa3869c700  1 osd.31 683 not healthy; waiting to boot
2018-08-28 15:26:55.859007 7faa3869c700  1 osd.31 683 is_healthy false -- only 1/5 up peers (less than 33%)
2018-08-28 15:26:55.859023 7faa3869c700  1 osd.31 683 not healthy; waiting to boot
2018-08-28 15:26:56.859122 7faa3869c700  1 osd.31 683 is_healthy false -- only 1/5 up peers (less than 33%)
2018-08-28 15:26:56.859151 7faa3869c700  1 osd.31 683 not healthy; waiting to boot
```

Since most heartbeat_peers of osd.31 were actually offline and osd.31 itself
was stuck at __waiting_for_healthy__, it was unable to refresh osdmap
(which was required for contacting with new up heartbeat_peers) and hence could
be stuck at __waiting_for_healthy__ forever.

Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
src/osd/OSD.cc