Skip to content

Commit

Permalink
rbd-mirror: removed dedicated thread from image deleter
Browse files Browse the repository at this point in the history
Fixes: http://tracker.ceph.com/issues/15322
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
  • Loading branch information
Jason Dillaman committed Nov 20, 2017
1 parent 9bf0172 commit 28983b0
Show file tree
Hide file tree
Showing 4 changed files with 326 additions and 290 deletions.
7 changes: 6 additions & 1 deletion src/common/options.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5870,9 +5870,14 @@ static std::vector<Option> get_rbd_mirror_options() {
.set_default(30)
.set_description("interval to refresh peers in rbd-mirror daemon"),

Option("rbd_mirror_concurrent_image_deletions", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
.set_default(1)
.set_min(1)
.set_description("maximum number of image deletions in parallel"),

Option("rbd_mirror_delete_retry_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
.set_default(30)
.set_description("interval to check and retry the failed requests in deleter"),
.set_description("interval to check and retry the failed deletion requests"),

Option("rbd_mirror_image_state_check_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
.set_default(30)
Expand Down
34 changes: 2 additions & 32 deletions src/test/rbd_mirror/test_ImageDeleter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -350,15 +350,13 @@ TEST_F(TestImageDeleter, Delete_Image_With_Clone) {
std::string clone_id = create_clone();

m_deleter->schedule_image_delete(m_local_io_ctx_ref, GLOBAL_IMAGE_ID, false);
m_deleter->set_busy_timer_interval(0.1);

C_SaferCond ctx;
m_deleter->wait_for_scheduled_deletion(m_local_pool_id, GLOBAL_IMAGE_ID,
&ctx);
EXPECT_EQ(-EBUSY, ctx.wait());

ASSERT_EQ(1u, m_deleter->get_delete_queue_items().size());
ASSERT_EQ(0u, m_deleter->get_failed_queue_items().size());

m_deleter->schedule_image_delete(m_local_io_ctx_ref, GLOBAL_CLONE_IMAGE_ID,
false);

Expand Down Expand Up @@ -449,19 +447,15 @@ TEST_F(TestImageDeleter, Fail_Delete_NonPrimary_Image) {
&ctx);
EXPECT_EQ(-EBUSY, ctx.wait());

ASSERT_EQ(0u, m_deleter->get_delete_queue_items().size());
ASSERT_EQ(1u, m_deleter->get_failed_queue_items().size());

EXPECT_EQ(0, ictx->state->close());
}

TEST_F(TestImageDeleter, Retry_Failed_Deletes) {
EXPECT_EQ(0, g_ceph_context->_conf->set_val("rbd_mirror_delete_retry_interval", "0.1"));
ImageCtx *ictx = new ImageCtx("", m_local_image_id, "", m_local_io_ctx,
false);
EXPECT_EQ(0, ictx->state->open(false));

m_deleter->set_failed_timer_interval(2);

m_deleter->schedule_image_delete(m_local_io_ctx_ref, GLOBAL_IMAGE_ID, false);

C_SaferCond ctx;
Expand All @@ -482,27 +476,3 @@ TEST_F(TestImageDeleter, Retry_Failed_Deletes) {
check_image_deleted();
}

TEST_F(TestImageDeleter, Delete_Is_Idempotent) {
ImageCtx *ictx = new ImageCtx("", m_local_image_id, "", m_local_io_ctx,
false);
EXPECT_EQ(0, ictx->state->open(false));

m_deleter->schedule_image_delete(m_local_io_ctx_ref, GLOBAL_IMAGE_ID, false);

C_SaferCond ctx;
m_deleter->wait_for_scheduled_deletion(m_local_pool_id, GLOBAL_IMAGE_ID,
&ctx);
EXPECT_EQ(-EBUSY, ctx.wait());

ASSERT_EQ(0u, m_deleter->get_delete_queue_items().size());
ASSERT_EQ(1u, m_deleter->get_failed_queue_items().size());

m_deleter->schedule_image_delete(m_local_io_ctx_ref, GLOBAL_IMAGE_ID, false);

ASSERT_EQ(0u, m_deleter->get_delete_queue_items().size());
ASSERT_EQ(1u, m_deleter->get_failed_queue_items().size());

EXPECT_EQ(0, ictx->state->close());
}


0 comments on commit 28983b0

Please sign in to comment.