]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: fix getting osd maps on initial osd startup 22585/head
authorPaul Emmerich <paul.emmerich@croit.io>
Fri, 15 Jun 2018 22:45:26 +0000 (00:45 +0200)
committerPaul Emmerich <paul.emmerich@croit.io>
Mon, 18 Jun 2018 19:01:50 +0000 (21:01 +0200)
Commit 89d0c357964ff28b83ac541c4d946f712a7bee47 introduced a check for
deleted pools that relies on getting an older osd map that might not be
available in some situations on OSDs starting up for the very first
time.

fixes https://tracker.ceph.com/issues/24423

Signed-off-by: Paul Emmerich <paul.emmerich@croit.io>
src/osd/OSD.cc

index 591a1b60902523fc2f27354d46a4906808ad5ec4..d6596fb36f74d7eaa1a04f55fafa1e28156aeeb3 100644 (file)
@@ -7328,7 +7328,11 @@ void OSD::handle_osd_map(MOSDMap *m)
   OSDMapRef lastmap;
   for (auto& i : added_maps) {
     if (!lastmap) {
-      lastmap = get_map(i.first - 1);
+      if (!(lastmap = service.try_get_map(i.first - 1))) {
+        dout(10) << __func__ << " can't get previous map " << i.first - 1
+                 << " probably first start of this osd" << dendl;
+        continue;
+      }
     }
     assert(lastmap->get_epoch() + 1 == i.second->get_epoch());
     for (auto& j : lastmap->get_pools()) {