From c5534eb689ccf594445577964e72fb109b42c017 Mon Sep 17 00:00:00 2001 From: Paul Emmerich Date: Sat, 16 Jun 2018 00:45:26 +0200 Subject: [PATCH] osd: fix getting osd maps on initial osd startup 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 (cherry picked from commit 02180f644094d520d5763afa0e76403591a90b9b) --- src/osd/OSD.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index a6cf1883603c..c95c52bb4749 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -7358,7 +7358,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()) { -- 2.47.3