]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
osd: set objecter.osdmap when starts 10804/head
authorKefu Chai <kchai@redhat.com>
Mon, 15 Aug 2016 07:42:29 +0000 (15:42 +0800)
committerLoic Dachary <ldachary@redhat.com>
Sun, 21 Aug 2016 20:23:26 +0000 (22:23 +0200)
commit1cbc839ebd11acb2ed0ebf0b0117eab09b5141c3
tree814418341e11ae7efad7badca183d5809528cd1e
parent4d37cfb6eed1737b21d9f3f18eee6169f48445b2
osd: set objecter.osdmap when starts

if any OSD is full or the pause flag is set in cluster, objecter will
always try to subscribe the next osdmap using the mon client shared with
OSD. but if the OSD's osdmap is very far behind on osd maps due to some
reasons, `MonClient::sub_want_increment()` will reject the subscribe
request from OSD, because it's asking for older maps while the mon client
is about to send the request from objecter for the *next* osdmap.

so we need to update objecter with the latest local osdmap, so it is
able to skip the new osdmaps if OSD needs to catch up with the cluster
first.

Fixes: http://tracker.ceph.com/issues/17023
Signed-off-by: Kefu Chai <kchai@redhat.com>
(cherry picked from commit 1515e08e7d425f01d2e9d02c34b2ae40cdf2611a)
src/osd/OSD.cc
src/osdc/Objecter.cc
src/osdc/Objecter.h