]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
mon: provide encoded canonical full OSDMap from primary 3247/head
authorSage Weil <sage@redhat.com>
Tue, 23 Dec 2014 20:39:08 +0000 (12:39 -0800)
committerSage Weil <sage@redhat.com>
Wed, 24 Dec 2014 01:01:53 +0000 (17:01 -0800)
commitaa56ee40c0e7578f32d0f2c343d90fe8fa221879
tree9d05f69fbe56ded91d8b421e05631c252c5e3293
parenta540ac338542514b465d4c1a052e0c4307fb4b71
mon: provide encoded canonical full OSDMap from primary

Currently we make each monitor apply the incremental and encode the full
map locally.  The original motivation was to save bandwidth, but the
savings are minimal to modest and the complexity associated with doing this
is huge.

This strategy also causes problems now that we have OSDMap crc's and old
mons/clusters may have diverging full OSDMaps due to mixed version
clusters.  See #10422

Instead, include the encoded full map in the paxos transaction.  We will
still apply the incremental and check the crc, but if it fails and we have
the correct version, reload it from disk and move on.  If we don't, we
will continue as we have before--the primary mon doesn't have support for
crc's yet.  When it does we will start verifying and/or get our
full map back into sync.

Fixes: #10422
Signed-off-by: Sage Weil <sage@redhat.com>
src/mon/OSDMonitor.cc