From: Jason Dillaman Date: Thu, 30 Jun 2016 14:24:01 +0000 (-0400) Subject: rbd-mirror: gracefully fail if object map is unavailable X-Git-Tag: v11.0.1~884^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=6f573ca2d63784e4a2b1e7a410044afdf58f6801;p=ceph-ci.git rbd-mirror: gracefully fail if object map is unavailable If the exclusive lock was lost due to a watch failure from an overloaded cluster, gracefully abort the image sync. Fixes: http://tracker.ceph.com/issues/16558 Signed-off-by: Jason Dillaman --- diff --git a/src/tools/rbd_mirror/image_sync/ObjectCopyRequest.cc b/src/tools/rbd_mirror/image_sync/ObjectCopyRequest.cc index 89acd037a6c..9975b5bf815 100644 --- a/src/tools/rbd_mirror/image_sync/ObjectCopyRequest.cc +++ b/src/tools/rbd_mirror/image_sync/ObjectCopyRequest.cc @@ -235,6 +235,13 @@ void ObjectCopyRequest::send_update_object_map() { m_local_image_ctx->snap_lock.put_read(); finish(0); return; + } else if (m_local_image_ctx->object_map == nullptr) { + // possible that exclusive lock was lost in background + derr << ": object map is not initialized" << dendl; + + m_local_image_ctx->snap_lock.put_read(); + finish(-EINVAL); + return; } assert(m_local_image_ctx->object_map != nullptr);