From 975c9047d0bb9cb7866d5dd62f55f6509272fbb6 Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Fri, 6 Dec 2019 22:38:33 -0500 Subject: [PATCH] rbd-mirror: moved event pre-processor to sub-namespace The current implementation is tied to journal-based replaying so move it down into the journal sub-namespace. Signed-off-by: Jason Dillaman --- src/test/rbd_mirror/CMakeLists.txt | 2 +- .../test_mock_EventPreprocessor.cc | 29 ++++++++++--------- .../rbd_mirror/test_mock_ImageReplayer.cc | 20 ++++++------- src/tools/rbd_mirror/CMakeLists.txt | 2 +- src/tools/rbd_mirror/ImageReplayer.cc | 7 +++-- src/tools/rbd_mirror/ImageReplayer.h | 10 +++++-- .../{ => journal}/EventPreprocessor.cc | 24 ++++++++------- .../{ => journal}/EventPreprocessor.h | 4 ++- 8 files changed, 54 insertions(+), 44 deletions(-) rename src/test/rbd_mirror/image_replayer/{ => journal}/test_mock_EventPreprocessor.cc (89%) rename src/tools/rbd_mirror/image_replayer/{ => journal}/EventPreprocessor.cc (88%) rename src/tools/rbd_mirror/image_replayer/{ => journal}/EventPreprocessor.h (95%) diff --git a/src/test/rbd_mirror/CMakeLists.txt b/src/test/rbd_mirror/CMakeLists.txt index 3c40aaa87988b..c769426ba52b2 100644 --- a/src/test/rbd_mirror/CMakeLists.txt +++ b/src/test/rbd_mirror/CMakeLists.txt @@ -35,10 +35,10 @@ add_executable(unittest_rbd_mirror image_deleter/test_mock_TrashWatcher.cc image_replayer/test_mock_BootstrapRequest.cc image_replayer/test_mock_CreateImageRequest.cc - image_replayer/test_mock_EventPreprocessor.cc image_replayer/test_mock_GetMirrorImageIdRequest.cc image_replayer/test_mock_PrepareLocalImageRequest.cc image_replayer/test_mock_PrepareRemoteImageRequest.cc + image_replayer/journal/test_mock_EventPreprocessor.cc image_sync/test_mock_SyncPointCreateRequest.cc image_sync/test_mock_SyncPointPruneRequest.cc pool_watcher/test_mock_RefreshImagesRequest.cc diff --git a/src/test/rbd_mirror/image_replayer/test_mock_EventPreprocessor.cc b/src/test/rbd_mirror/image_replayer/journal/test_mock_EventPreprocessor.cc similarity index 89% rename from src/test/rbd_mirror/image_replayer/test_mock_EventPreprocessor.cc rename to src/test/rbd_mirror/image_replayer/journal/test_mock_EventPreprocessor.cc index 9e02a82f38ddc..ad00552814bfb 100644 --- a/src/test/rbd_mirror/image_replayer/test_mock_EventPreprocessor.cc +++ b/src/test/rbd_mirror/image_replayer/journal/test_mock_EventPreprocessor.cc @@ -4,8 +4,8 @@ #include "test/rbd_mirror/test_mock_fixture.h" #include "librbd/journal/Types.h" #include "librbd/journal/TypeTraits.h" -#include "tools/rbd_mirror/image_replayer/EventPreprocessor.h" #include "tools/rbd_mirror/Threads.h" +#include "tools/rbd_mirror/image_replayer/journal/EventPreprocessor.h" #include "test/journal/mock/MockJournaler.h" #include "test/librbd/mock/MockImageCtx.h" @@ -32,17 +32,17 @@ struct TypeTraits { } // namespace librbd // template definitions -#include "tools/rbd_mirror/image_replayer/EventPreprocessor.cc" -template class rbd::mirror::image_replayer::EventPreprocessor; +#include "tools/rbd_mirror/image_replayer/journal/EventPreprocessor.cc" namespace rbd { namespace mirror { namespace image_replayer { +namespace journal { using testing::_; using testing::WithArg; -class TestMockImageReplayerEventPreprocessor : public TestMockFixture { +class TestMockImageReplayerJournalEventPreprocessor : public TestMockFixture { public: typedef EventPreprocessor MockEventPreprocessor; @@ -59,7 +59,7 @@ public: .WillOnce(CompleteContext(r)); } - void expect_update_client(journal::MockJournaler &mock_journaler, int r) { + void expect_update_client(::journal::MockJournaler &mock_journaler, int r) { EXPECT_CALL(mock_journaler, update_client(_, _)) .WillOnce(WithArg<1>(CompleteContext(r))); } @@ -69,7 +69,7 @@ public: }; -TEST_F(TestMockImageReplayerEventPreprocessor, IsNotRequired) { +TEST_F(TestMockImageReplayerJournalEventPreprocessor, IsNotRequired) { librbd::MockTestImageCtx mock_local_image_ctx(*m_local_image_ctx); ::journal::MockJournaler mock_remote_journaler; @@ -83,7 +83,7 @@ TEST_F(TestMockImageReplayerEventPreprocessor, IsNotRequired) { ASSERT_FALSE(event_preprocessor.is_required(event_entry)); } -TEST_F(TestMockImageReplayerEventPreprocessor, IsRequiredSnapMapPrune) { +TEST_F(TestMockImageReplayerJournalEventPreprocessor, IsRequiredSnapMapPrune) { librbd::MockTestImageCtx mock_local_image_ctx(*m_local_image_ctx); ::journal::MockJournaler mock_remote_journaler; @@ -98,7 +98,7 @@ TEST_F(TestMockImageReplayerEventPreprocessor, IsRequiredSnapMapPrune) { ASSERT_TRUE(event_preprocessor.is_required(event_entry)); } -TEST_F(TestMockImageReplayerEventPreprocessor, IsRequiredSnapRename) { +TEST_F(TestMockImageReplayerJournalEventPreprocessor, IsRequiredSnapRename) { librbd::MockTestImageCtx mock_local_image_ctx(*m_local_image_ctx); ::journal::MockJournaler mock_remote_journaler; @@ -112,7 +112,7 @@ TEST_F(TestMockImageReplayerEventPreprocessor, IsRequiredSnapRename) { ASSERT_TRUE(event_preprocessor.is_required(event_entry)); } -TEST_F(TestMockImageReplayerEventPreprocessor, PreprocessSnapMapPrune) { +TEST_F(TestMockImageReplayerJournalEventPreprocessor, PreprocessSnapMapPrune) { librbd::MockTestImageCtx mock_local_image_ctx(*m_local_image_ctx); ::journal::MockJournaler mock_remote_journaler; @@ -137,7 +137,7 @@ TEST_F(TestMockImageReplayerEventPreprocessor, PreprocessSnapMapPrune) { ASSERT_EQ(expected_snap_seqs, m_client_meta.snap_seqs); } -TEST_F(TestMockImageReplayerEventPreprocessor, PreprocessSnapRename) { +TEST_F(TestMockImageReplayerJournalEventPreprocessor, PreprocessSnapRename) { librbd::MockTestImageCtx mock_local_image_ctx(*m_local_image_ctx); ::journal::MockJournaler mock_remote_journaler; @@ -167,7 +167,7 @@ TEST_F(TestMockImageReplayerEventPreprocessor, PreprocessSnapRename) { ASSERT_EQ(6U, event->snap_id); } -TEST_F(TestMockImageReplayerEventPreprocessor, PreprocessSnapRenameMissing) { +TEST_F(TestMockImageReplayerJournalEventPreprocessor, PreprocessSnapRenameMissing) { librbd::MockTestImageCtx mock_local_image_ctx(*m_local_image_ctx); ::journal::MockJournaler mock_remote_journaler; @@ -190,7 +190,7 @@ TEST_F(TestMockImageReplayerEventPreprocessor, PreprocessSnapRenameMissing) { ASSERT_EQ(CEPH_NOSNAP, event->snap_id); } -TEST_F(TestMockImageReplayerEventPreprocessor, PreprocessSnapRenameKnown) { +TEST_F(TestMockImageReplayerJournalEventPreprocessor, PreprocessSnapRenameKnown) { librbd::MockTestImageCtx mock_local_image_ctx(*m_local_image_ctx); ::journal::MockJournaler mock_remote_journaler; @@ -219,7 +219,7 @@ TEST_F(TestMockImageReplayerEventPreprocessor, PreprocessSnapRenameKnown) { ASSERT_EQ(6U, event->snap_id); } -TEST_F(TestMockImageReplayerEventPreprocessor, PreprocessRefreshError) { +TEST_F(TestMockImageReplayerJournalEventPreprocessor, PreprocessRefreshError) { librbd::MockTestImageCtx mock_local_image_ctx(*m_local_image_ctx); ::journal::MockJournaler mock_remote_journaler; @@ -237,7 +237,7 @@ TEST_F(TestMockImageReplayerEventPreprocessor, PreprocessRefreshError) { ASSERT_EQ(-EINVAL, ctx.wait()); } -TEST_F(TestMockImageReplayerEventPreprocessor, PreprocessClientUpdateError) { +TEST_F(TestMockImageReplayerJournalEventPreprocessor, PreprocessClientUpdateError) { librbd::MockTestImageCtx mock_local_image_ctx(*m_local_image_ctx); ::journal::MockJournaler mock_remote_journaler; @@ -260,6 +260,7 @@ TEST_F(TestMockImageReplayerEventPreprocessor, PreprocessClientUpdateError) { ASSERT_EQ(-EINVAL, ctx.wait()); } +} // namespace journal } // namespace image_replayer } // namespace mirror } // namespace rbd diff --git a/src/test/rbd_mirror/test_mock_ImageReplayer.cc b/src/test/rbd_mirror/test_mock_ImageReplayer.cc index a47b4456e6f65..3b4d596ed55b0 100644 --- a/src/test/rbd_mirror/test_mock_ImageReplayer.cc +++ b/src/test/rbd_mirror/test_mock_ImageReplayer.cc @@ -11,9 +11,9 @@ #include "tools/rbd_mirror/Threads.h" #include "tools/rbd_mirror/image_replayer/BootstrapRequest.h" #include "tools/rbd_mirror/image_replayer/CloseImageRequest.h" -#include "tools/rbd_mirror/image_replayer/EventPreprocessor.h" #include "tools/rbd_mirror/image_replayer/PrepareLocalImageRequest.h" #include "tools/rbd_mirror/image_replayer/PrepareRemoteImageRequest.h" +#include "tools/rbd_mirror/image_replayer/journal/EventPreprocessor.h" #include "tools/rbd_mirror/image_replayer/journal/ReplayStatusFormatter.h" #include "test/rbd_mirror/test_mock_fixture.h" #include "test/journal/mock/MockJournaler.h" @@ -270,6 +270,13 @@ struct CloseImageRequest { MOCK_METHOD0(send, void()); }; +BootstrapRequest* BootstrapRequest::s_instance = nullptr; +CloseImageRequest* CloseImageRequest::s_instance = nullptr; +PrepareLocalImageRequest* PrepareLocalImageRequest::s_instance = nullptr; +PrepareRemoteImageRequest* PrepareRemoteImageRequest::s_instance = nullptr; + +namespace journal { + template<> struct EventPreprocessor { static EventPreprocessor *s_instance; @@ -300,14 +307,6 @@ struct EventPreprocessor { MOCK_METHOD2(preprocess, void(librbd::journal::EventEntry *, Context *)); }; -BootstrapRequest* BootstrapRequest::s_instance = nullptr; -CloseImageRequest* CloseImageRequest::s_instance = nullptr; -EventPreprocessor* EventPreprocessor::s_instance = nullptr; -PrepareLocalImageRequest* PrepareLocalImageRequest::s_instance = nullptr; -PrepareRemoteImageRequest* PrepareRemoteImageRequest::s_instance = nullptr; - -namespace journal { - template<> struct ReplayStatusFormatter { static ReplayStatusFormatter* s_instance; @@ -334,6 +333,7 @@ struct ReplayStatusFormatter { MOCK_METHOD2(get_or_send_update, bool(std::string *description, Context *on_finish)); }; +EventPreprocessor* EventPreprocessor::s_instance = nullptr; ReplayStatusFormatter* ReplayStatusFormatter::s_instance = nullptr; } // namespace journal @@ -365,9 +365,9 @@ public: typedef MirrorStatusUpdater MockMirrorStatusUpdater; typedef image_replayer::BootstrapRequest MockBootstrapRequest; typedef image_replayer::CloseImageRequest MockCloseImageRequest; - typedef image_replayer::EventPreprocessor MockEventPreprocessor; typedef image_replayer::PrepareLocalImageRequest MockPrepareLocalImageRequest; typedef image_replayer::PrepareRemoteImageRequest MockPrepareRemoteImageRequest; + typedef image_replayer::journal::EventPreprocessor MockEventPreprocessor; typedef image_replayer::journal::ReplayStatusFormatter MockReplayStatusFormatter; typedef librbd::journal::Replay MockReplay; typedef ImageReplayer MockImageReplayer; diff --git a/src/tools/rbd_mirror/CMakeLists.txt b/src/tools/rbd_mirror/CMakeLists.txt index 736dbe9246cb1..cdac9c614c42b 100644 --- a/src/tools/rbd_mirror/CMakeLists.txt +++ b/src/tools/rbd_mirror/CMakeLists.txt @@ -35,13 +35,13 @@ set(rbd_mirror_internal image_replayer/BootstrapRequest.cc image_replayer/CloseImageRequest.cc image_replayer/CreateImageRequest.cc - image_replayer/EventPreprocessor.cc image_replayer/GetMirrorImageIdRequest.cc image_replayer/OpenImageRequest.cc image_replayer/OpenLocalImageRequest.cc image_replayer/PrepareLocalImageRequest.cc image_replayer/PrepareRemoteImageRequest.cc image_replayer/Utils.cc + image_replayer/journal/EventPreprocessor.cc image_replayer/journal/ReplayStatusFormatter.cc image_sync/SyncPointCreateRequest.cc image_sync/SyncPointPruneRequest.cc diff --git a/src/tools/rbd_mirror/ImageReplayer.cc b/src/tools/rbd_mirror/ImageReplayer.cc index 9933dd7509b17..42ef95606184d 100644 --- a/src/tools/rbd_mirror/ImageReplayer.cc +++ b/src/tools/rbd_mirror/ImageReplayer.cc @@ -27,9 +27,9 @@ #include "Threads.h" #include "tools/rbd_mirror/image_replayer/BootstrapRequest.h" #include "tools/rbd_mirror/image_replayer/CloseImageRequest.h" -#include "tools/rbd_mirror/image_replayer/EventPreprocessor.h" #include "tools/rbd_mirror/image_replayer/PrepareLocalImageRequest.h" #include "tools/rbd_mirror/image_replayer/PrepareRemoteImageRequest.h" +#include "tools/rbd_mirror/image_replayer/journal/EventPreprocessor.h" #include "tools/rbd_mirror/image_replayer/journal/ReplayStatusFormatter.h" #define dout_context g_ceph_context @@ -633,7 +633,7 @@ void ImageReplayer::handle_start_replay(int r) { std::swap(m_on_start_finish, on_finish); } - m_event_preprocessor = image_replayer::EventPreprocessor::create( + m_event_preprocessor = image_replayer::journal::EventPreprocessor::create( *m_local_image_ctx, *m_remote_journaler, m_local_mirror_uuid, &m_client_meta, m_threads->work_queue); @@ -1543,7 +1543,8 @@ void ImageReplayer::shut_down(int r) { m_local_journal->stop_external_replay(); m_local_replay = nullptr; - image_replayer::EventPreprocessor::destroy(m_event_preprocessor); + image_replayer::journal::EventPreprocessor::destroy( + m_event_preprocessor); m_event_preprocessor = nullptr; ctx->complete(0); }); diff --git a/src/tools/rbd_mirror/ImageReplayer.h b/src/tools/rbd_mirror/ImageReplayer.h index 29613c87cac6d..f121f02e53efc 100644 --- a/src/tools/rbd_mirror/ImageReplayer.h +++ b/src/tools/rbd_mirror/ImageReplayer.h @@ -56,10 +56,13 @@ template struct Threads; namespace image_replayer { template class BootstrapRequest; -template class EventPreprocessor; -namespace journal { template class ReplayStatusFormatter; } +namespace journal { +template class EventPreprocessor; +template class ReplayStatusFormatter; + +} // namespace journal } // namespace image_replayer /** @@ -311,7 +314,8 @@ private: bool m_delete_requested = false; bool m_resync_requested = false; - image_replayer::EventPreprocessor *m_event_preprocessor = nullptr; + image_replayer::journal::EventPreprocessor* + m_event_preprocessor = nullptr; image_replayer::journal::ReplayStatusFormatter* m_replay_status_formatter = nullptr; ImageCtxT *m_local_image_ctx = nullptr; diff --git a/src/tools/rbd_mirror/image_replayer/EventPreprocessor.cc b/src/tools/rbd_mirror/image_replayer/journal/EventPreprocessor.cc similarity index 88% rename from src/tools/rbd_mirror/image_replayer/EventPreprocessor.cc rename to src/tools/rbd_mirror/image_replayer/journal/EventPreprocessor.cc index 9034ca4f64258..c1568073cf336 100644 --- a/src/tools/rbd_mirror/image_replayer/EventPreprocessor.cc +++ b/src/tools/rbd_mirror/image_replayer/journal/EventPreprocessor.cc @@ -17,12 +17,14 @@ #define dout_subsys ceph_subsys_rbd_mirror #undef dout_prefix -#define dout_prefix *_dout << "rbd::mirror::image_replayer::EventPreprocessor: " \ - << this << " " << __func__ +#define dout_prefix *_dout << "rbd::mirror::image_replayer::journal::" \ + << "EventPreprocessor: " << this << " " << __func__ \ + << ": " namespace rbd { namespace mirror { namespace image_replayer { +namespace journal { using librbd::util::create_context_callback; @@ -72,7 +74,7 @@ void EventPreprocessor::refresh_image() { template void EventPreprocessor::handle_refresh_image(int r) { - dout(20) << ": r=" << r << dendl; + dout(20) << "r=" << r << dendl; if (r < 0) { derr << "error encountered during image refresh: " << cpp_strerror(r) @@ -104,14 +106,13 @@ void EventPreprocessor::preprocess_event() { template int EventPreprocessor::preprocess_snap_rename( librbd::journal::SnapRenameEvent &event) { - dout(20) << ": " - << "remote_snap_id=" << event.snap_id << ", " + dout(20) << "remote_snap_id=" << event.snap_id << ", " << "src_snap_name=" << event.src_snap_name << ", " << "dest_snap_name=" << event.dst_snap_name << dendl; auto snap_seq_it = m_snap_seqs.find(event.snap_id); if (snap_seq_it != m_snap_seqs.end()) { - dout(20) << ": remapping remote snap id " << snap_seq_it->first << " " + dout(20) << "remapping remote snap id " << snap_seq_it->first << " " << "to local snap id " << snap_seq_it->second << dendl; event.snap_id = snap_seq_it->second; return 0; @@ -120,13 +121,13 @@ int EventPreprocessor::preprocess_snap_rename( auto snap_id_it = m_local_image_ctx.snap_ids.find({cls::rbd::UserSnapshotNamespace(), event.src_snap_name}); if (snap_id_it == m_local_image_ctx.snap_ids.end()) { - dout(20) << ": cannot map remote snapshot '" << event.src_snap_name << "' " + dout(20) << "cannot map remote snapshot '" << event.src_snap_name << "' " << "to local snapshot" << dendl; event.snap_id = CEPH_NOSNAP; return -ENOENT; } - dout(20) << ": mapping remote snap id " << event.snap_id << " " + dout(20) << "mapping remote snap id " << event.snap_id << " " << "to local snap id " << snap_id_it->second << dendl; m_snap_seqs_updated = true; m_snap_seqs[event.snap_id] = snap_id_it->second; @@ -157,7 +158,7 @@ void EventPreprocessor::update_client() { template void EventPreprocessor::handle_update_client(int r) { - dout(20) << ": r=" << r << dendl; + dout(20) << "r=" << r << dendl; if (r < 0) { derr << "failed to update mirror peer journal client: " @@ -187,7 +188,7 @@ bool EventPreprocessor::prune_snap_map(SnapSeqs *snap_seqs) { template void EventPreprocessor::finish(int r) { - dout(20) << ": r=" << r << dendl; + dout(20) << "r=" << r << dendl; Context *on_finish = m_on_finish; m_on_finish = nullptr; @@ -197,8 +198,9 @@ void EventPreprocessor::finish(int r) { m_work_queue->queue(on_finish, r); } +} // namespace journal } // namespace image_replayer } // namespace mirror } // namespace rbd -template class rbd::mirror::image_replayer::EventPreprocessor; +template class rbd::mirror::image_replayer::journal::EventPreprocessor; diff --git a/src/tools/rbd_mirror/image_replayer/EventPreprocessor.h b/src/tools/rbd_mirror/image_replayer/journal/EventPreprocessor.h similarity index 95% rename from src/tools/rbd_mirror/image_replayer/EventPreprocessor.h rename to src/tools/rbd_mirror/image_replayer/journal/EventPreprocessor.h index 67aeea0b80752..5844e6f748376 100644 --- a/src/tools/rbd_mirror/image_replayer/EventPreprocessor.h +++ b/src/tools/rbd_mirror/image_replayer/journal/EventPreprocessor.h @@ -19,6 +19,7 @@ namespace librbd { class ImageCtx; } namespace rbd { namespace mirror { namespace image_replayer { +namespace journal { template class EventPreprocessor { @@ -113,10 +114,11 @@ private: }; +} // namespace journal } // namespace image_replayer } // namespace mirror } // namespace rbd -extern template class rbd::mirror::image_replayer::EventPreprocessor; +extern template class rbd::mirror::image_replayer::journal::EventPreprocessor; #endif // RBD_MIRROR_IMAGE_REPLAYER_EVENT_PREPROCESSOR_H -- 2.39.5