]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd-mirror: fix race on namespace replayer initialization failure 32243/head
authorMykola Golub <mgolub@suse.com>
Fri, 13 Dec 2019 13:16:17 +0000 (15:16 +0200)
committerMykola Golub <mgolub@suse.com>
Fri, 13 Dec 2019 13:16:17 +0000 (15:16 +0200)
Fixes: https://tracker.ceph.com/issues/43289
Signed-off-by: Mykola Golub <mgolub@suse.com>
src/tools/rbd_mirror/PoolReplayer.cc

index 75ddc5fd95671416b66e57f6fd2c913561c6b34d..5e822e84213226547eb96ad5a6af3c661c273678 100644 (file)
@@ -609,13 +609,13 @@ void PoolReplayer<I>::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);
           }