From dce1b3609cad89b3e1177a6da925e38c5e217f79 Mon Sep 17 00:00:00 2001 From: Mykola Golub Date: Fri, 13 Dec 2019 15:16:17 +0200 Subject: [PATCH] rbd-mirror: fix race on namespace replayer initialization failure Fixes: https://tracker.ceph.com/issues/43289 Signed-off-by: Mykola Golub --- src/tools/rbd_mirror/PoolReplayer.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/rbd_mirror/PoolReplayer.cc b/src/tools/rbd_mirror/PoolReplayer.cc index 75ddc5fd95671..5e822e8421322 100644 --- a/src/tools/rbd_mirror/PoolReplayer.cc +++ b/src/tools/rbd_mirror/PoolReplayer.cc @@ -609,13 +609,13 @@ void PoolReplayer::update_namespace_replayers() { auto on_init = new LambdaContext( [this, namespace_replayer, name, &mirroring_namespaces, ctx=gather_ctx->new_sub()](int r) { + std::lock_guard locker{m_lock}; if (r < 0) { derr << "failed to initialize namespace replayer for namespace " << name << ": " << cpp_strerror(r) << dendl; delete namespace_replayer; mirroring_namespaces.erase(name); } else { - std::lock_guard locker{m_lock}; m_namespace_replayers[name] = namespace_replayer; m_service_daemon->add_namespace(m_local_pool_id, name); } -- 2.39.5