Skip to content

Commit 311dbe2

Browse files
committed
3
1 parent cbf318f commit 311dbe2

File tree

2 files changed

+57
-45
lines changed

2 files changed

+57
-45
lines changed

cloud/src/common/config.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,8 @@ CONF_mBool(enable_load_txn_status_check, "true");
267267
CONF_mBool(enable_tablet_job_check, "true");
268268

269269
CONF_mBool(enable_recycle_delete_rowset_key_check, "true");
270+
CONF_mBool(enable_mark_delete_rowset_before_recycle, "true");
271+
CONF_mBool(enable_abort_txn_and_job_for_delete_rowset_before_recycle, "true");
270272

271273
// Declare a selection strategy for those servers have many ips.
272274
// Note that there should at most one ip match this list.

cloud/src/recycler/recycler.cpp

Lines changed: 55 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -4541,34 +4541,39 @@ int InstanceRecycler::recycle_rowsets() {
45414541
}
45424542

45434543
auto* rowset_meta = rowset.mutable_rowset_meta();
4544-
int mark_ret = mark_rowset_as_recycled(txn_kv_.get(), instance_id_, k, rowset);
4545-
if (mark_ret == -1) {
4546-
LOG(WARNING) << "failed to mark rowset as recycled, instance_id=" << instance_id_
4547-
<< " tablet_id=" << rowset_meta->tablet_id() << " version=["
4548-
<< rowset_meta->start_version() << '-' << rowset_meta->end_version()
4549-
<< "]";
4550-
return -1;
4551-
} else if (mark_ret == 1) {
4552-
LOG(INFO) << "rowset already marked as recycled, recycler will delete data and kv at "
4553-
"next turn, instance_id="
4554-
<< instance_id_ << " tablet_id=" << rowset_meta->tablet_id() << " version=["
4555-
<< rowset_meta->start_version() << '-' << rowset_meta->end_version() << "]";
4556-
return 0;
4544+
if (config::enable_mark_delete_rowset_before_recycle) {
4545+
int mark_ret = mark_rowset_as_recycled(txn_kv_.get(), instance_id_, k, rowset);
4546+
if (mark_ret == -1) {
4547+
LOG(WARNING) << "failed to mark rowset as recycled, instance_id=" << instance_id_
4548+
<< " tablet_id=" << rowset_meta->tablet_id() << " version=["
4549+
<< rowset_meta->start_version() << '-' << rowset_meta->end_version()
4550+
<< "]";
4551+
return -1;
4552+
} else if (mark_ret == 1) {
4553+
LOG(INFO)
4554+
<< "rowset already marked as recycled, recycler will delete data and kv at "
4555+
"next turn, instance_id="
4556+
<< instance_id_ << " tablet_id=" << rowset_meta->tablet_id() << " version=["
4557+
<< rowset_meta->start_version() << '-' << rowset_meta->end_version() << "]";
4558+
return 0;
4559+
}
45574560
}
45584561

4559-
LOG(INFO) << "begin to abort txn or job for related rowset, instance_id=" << instance_id_
4560-
<< " tablet_id=" << rowset_meta->tablet_id() << " version=["
4561-
<< rowset_meta->start_version() << '-' << rowset_meta->end_version() << "]";
4562+
if (config::enable_abort_txn_and_job_for_delete_rowset_before_recycle) {
4563+
LOG(INFO) << "begin to abort txn or job for related rowset, instance_id="
4564+
<< instance_id_ << " tablet_id=" << rowset_meta->tablet_id() << " version=["
4565+
<< rowset_meta->start_version() << '-' << rowset_meta->end_version() << "]";
45624566

4563-
if (rowset_meta->end_version() != 1) {
4564-
int ret = abort_txn_or_job_for_recycle(rowset);
4567+
if (rowset_meta->end_version() != 1) {
4568+
int ret = abort_txn_or_job_for_recycle(rowset);
45654569

4566-
if (ret != 0) {
4567-
LOG(WARNING) << "failed to abort txn or job for related rowset, instance_id="
4568-
<< instance_id_ << " tablet_id=" << rowset.tablet_id() << " version=["
4569-
<< rowset_meta->start_version() << '-' << rowset_meta->end_version()
4570-
<< "]";
4571-
return ret;
4570+
if (ret != 0) {
4571+
LOG(WARNING) << "failed to abort txn or job for related rowset, instance_id="
4572+
<< instance_id_ << " tablet_id=" << rowset.tablet_id()
4573+
<< " version=[" << rowset_meta->start_version() << '-'
4574+
<< rowset_meta->end_version() << "]";
4575+
return ret;
4576+
}
45724577
}
45734578
}
45744579

@@ -5263,30 +5268,35 @@ int InstanceRecycler::recycle_tmp_rowsets() {
52635268
return 0;
52645269
}
52655270

5266-
int mark_ret = mark_rowset_as_recycled(txn_kv_.get(), instance_id_, k, rowset);
5267-
if (mark_ret == -1) {
5268-
LOG(WARNING) << "failed to mark rowset as recycled, instance_id=" << instance_id_
5269-
<< " tablet_id=" << rowset.tablet_id() << " version=["
5270-
<< rowset.start_version() << '-' << rowset.end_version() << "]";
5271-
return -1;
5272-
} else if (mark_ret == 1) {
5273-
LOG(INFO) << "rowset already marked as recycled, recycler will delete data and kv at "
5274-
"next turn, instance_id="
5275-
<< instance_id_ << " tablet_id=" << rowset.tablet_id() << " version=["
5276-
<< rowset.start_version() << '-' << rowset.end_version() << "]";
5277-
return 0;
5271+
if (config::enable_mark_delete_rowset_before_recycle) {
5272+
int mark_ret = mark_rowset_as_recycled(txn_kv_.get(), instance_id_, k, rowset);
5273+
if (mark_ret == -1) {
5274+
LOG(WARNING) << "failed to mark rowset as recycled, instance_id=" << instance_id_
5275+
<< " tablet_id=" << rowset.tablet_id() << " version=["
5276+
<< rowset.start_version() << '-' << rowset.end_version() << "]";
5277+
return -1;
5278+
} else if (mark_ret == 1) {
5279+
LOG(INFO)
5280+
<< "rowset already marked as recycled, recycler will delete data and kv at "
5281+
"next turn, instance_id="
5282+
<< instance_id_ << " tablet_id=" << rowset.tablet_id() << " version=["
5283+
<< rowset.start_version() << '-' << rowset.end_version() << "]";
5284+
return 0;
5285+
}
52785286
}
52795287

5280-
LOG(INFO) << "begin to abort txn or job for related rowset, instance_id=" << instance_id_
5281-
<< " tablet_id=" << rowset.tablet_id() << " version=[" << rowset.start_version()
5282-
<< '-' << rowset.end_version() << "]";
5288+
if (config::enable_abort_txn_and_job_for_delete_rowset_before_recycle) {
5289+
LOG(INFO) << "begin to abort txn or job for related rowset, instance_id="
5290+
<< instance_id_ << " tablet_id=" << rowset.tablet_id() << " version=["
5291+
<< rowset.start_version() << '-' << rowset.end_version() << "]";
52835292

5284-
int ret = abort_txn_or_job_for_recycle(rowset);
5285-
if (ret != 0) {
5286-
LOG(WARNING) << "failed to abort txn or job for related rowset, instance_id="
5287-
<< instance_id_ << " tablet_id=" << rowset.tablet_id() << " version=["
5288-
<< rowset.start_version() << '-' << rowset.end_version() << "]";
5289-
return ret;
5293+
int ret = abort_txn_or_job_for_recycle(rowset);
5294+
if (ret != 0) {
5295+
LOG(WARNING) << "failed to abort txn or job for related rowset, instance_id="
5296+
<< instance_id_ << " tablet_id=" << rowset.tablet_id() << " version=["
5297+
<< rowset.start_version() << '-' << rowset.end_version() << "]";
5298+
return ret;
5299+
}
52905300
}
52915301

52925302
++num_expired;

0 commit comments

Comments
 (0)