diff --git a/src/tools/rbd_mirror/ImageReplayer.cc b/src/tools/rbd_mirror/ImageReplayer.cc index 90961eb2d9d..d35f542bd3a 100644 --- a/src/tools/rbd_mirror/ImageReplayer.cc +++ b/src/tools/rbd_mirror/ImageReplayer.cc @@ -1157,6 +1157,16 @@ void ImageReplayer::shut_down(int r, Context *on_start) { request->send(); }); } + if (m_remote_journaler != nullptr) { + ctx = new FunctionContext([this, ctx](int r) { + delete m_remote_journaler; + m_remote_journaler = nullptr; + ctx->complete(0); + }); + ctx = new FunctionContext([this, ctx](int r) { + m_remote_journaler->shut_down(ctx); + }); + } if (m_local_replay != nullptr) { ctx = new FunctionContext([this, ctx](int r) { if (r < 0) { @@ -1170,16 +1180,6 @@ void ImageReplayer::shut_down(int r, Context *on_start) { m_local_replay->shut_down(true, ctx); }); } - if (m_remote_journaler != nullptr) { - ctx = new FunctionContext([this, ctx](int r) { - delete m_remote_journaler; - m_remote_journaler = nullptr; - ctx->complete(0); - }); - ctx = new FunctionContext([this, ctx](int r) { - m_remote_journaler->shut_down(ctx); - }); - } if (m_replay_handler != nullptr) { ctx = new FunctionContext([this, ctx](int r) { delete m_replay_handler;