remove limit of block mark
This commit is contained in:
@ -166,7 +166,7 @@ int ObAllVirtualMacroBlockMarkerStatus::inner_get_next_row(common::ObNewRow *&ro
|
|||||||
}
|
}
|
||||||
case OB_APP_MIN_COLUMN_ID + 18: {
|
case OB_APP_MIN_COLUMN_ID + 18: {
|
||||||
// whether finished marking
|
// whether finished marking
|
||||||
cur_row_.cells_[i].set_bool(marker_status_.mark_finished_);
|
cur_row_.cells_[i].set_bool(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case OB_APP_MIN_COLUMN_ID + 19: {
|
case OB_APP_MIN_COLUMN_ID + 19: {
|
||||||
|
|||||||
@ -794,18 +794,15 @@ void ObBlockManager::update_marker_status(const ObMacroBlockMarkerStatus &tmp_st
|
|||||||
marker_status_.sweep_cost_time_ = tmp_status.sweep_cost_time_;
|
marker_status_.sweep_cost_time_ = tmp_status.sweep_cost_time_;
|
||||||
marker_status_.start_time_ = tmp_status.start_time_;
|
marker_status_.start_time_ = tmp_status.start_time_;
|
||||||
marker_status_.last_end_time_ = tmp_status.last_end_time_;
|
marker_status_.last_end_time_ = tmp_status.last_end_time_;
|
||||||
marker_status_.mark_finished_ = tmp_status.mark_finished_;
|
marker_status_.linked_block_count_ = tmp_status.linked_block_count_;
|
||||||
if (tmp_status.mark_finished_) {
|
marker_status_.index_block_count_ = tmp_status.index_block_count_;
|
||||||
marker_status_.linked_block_count_ = tmp_status.linked_block_count_;
|
marker_status_.ids_block_count_ = tmp_status.ids_block_count_;
|
||||||
marker_status_.index_block_count_ = tmp_status.index_block_count_;
|
marker_status_.tmp_file_count_ = tmp_status.tmp_file_count_;
|
||||||
marker_status_.ids_block_count_ = tmp_status.ids_block_count_;
|
marker_status_.data_block_count_ = tmp_status.data_block_count_;
|
||||||
marker_status_.tmp_file_count_ = tmp_status.tmp_file_count_;
|
marker_status_.shared_data_block_count_ = tmp_status.shared_data_block_count_;
|
||||||
marker_status_.data_block_count_ = tmp_status.data_block_count_;
|
marker_status_.pending_free_count_ = tmp_status.pending_free_count_;
|
||||||
marker_status_.shared_data_block_count_ = tmp_status.shared_data_block_count_;
|
marker_status_.shared_meta_block_count_ = tmp_status.shared_meta_block_count_;
|
||||||
marker_status_.pending_free_count_ = tmp_status.pending_free_count_;
|
marker_status_.hold_info_ = tmp_status.hold_info_;
|
||||||
marker_status_.shared_meta_block_count_ = tmp_status.shared_meta_block_count_;
|
|
||||||
marker_status_.hold_info_ = tmp_status.hold_info_;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ObBlockManager::GetOldestHoldBlockFunctor::operator()(
|
bool ObBlockManager::GetOldestHoldBlockFunctor::operator()(
|
||||||
@ -960,15 +957,7 @@ void ObBlockManager::mark_and_sweep()
|
|||||||
skip_mark = true;
|
skip_mark = true;
|
||||||
LOG_INFO("no block alloc/free, no need to mark blocks", K(ret));
|
LOG_INFO("no block alloc/free, no need to mark blocks", K(ret));
|
||||||
} else if (OB_FAIL(mark_macro_blocks(mark_info, macro_id_set, tmp_status))) {//mark
|
} else if (OB_FAIL(mark_macro_blocks(mark_info, macro_id_set, tmp_status))) {//mark
|
||||||
if (OB_EAGAIN == ret) {
|
LOG_WARN("fail to mark macro blocks", K(ret));
|
||||||
tmp_status.mark_finished_ = false;
|
|
||||||
ret = OB_SUCCESS;
|
|
||||||
// skip marking
|
|
||||||
} else {
|
|
||||||
LOG_WARN("fail to mark macro blocks", K(ret));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
tmp_status.mark_finished_ = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (OB_FAIL(ret)) {
|
if (OB_FAIL(ret)) {
|
||||||
@ -1082,30 +1071,24 @@ int ObBlockManager::mark_tenant_blocks(
|
|||||||
ObTenantTabletIterator tablet_iter(*t3m, iter_allocator);
|
ObTenantTabletIterator tablet_iter(*t3m, iter_allocator);
|
||||||
ObTabletHandle handle;
|
ObTabletHandle handle;
|
||||||
while (OB_SUCC(ret)) {
|
while (OB_SUCC(ret)) {
|
||||||
if (!continue_mark()) {
|
handle.reset();
|
||||||
ret = OB_EAGAIN;
|
iter_allocator.reuse();
|
||||||
LOG_INFO("disk usage exceeds threshold, skip marking", K(io_device_->get_free_block_count()),
|
if (OB_FAIL(tablet_iter.get_next_tablet(handle))) {
|
||||||
K(super_block_.get_total_macro_block_count()));
|
if (OB_ITER_END == ret) {
|
||||||
} else {
|
ret = OB_SUCCESS;
|
||||||
handle.reset();
|
break;
|
||||||
iter_allocator.reuse();
|
|
||||||
if (OB_FAIL(tablet_iter.get_next_tablet(handle))) {
|
|
||||||
if (OB_ITER_END == ret) {
|
|
||||||
ret = OB_SUCCESS;
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
LOG_WARN("fail to get next in-memory tablet", K(ret));
|
|
||||||
}
|
|
||||||
} else if (handle.get_obj()->is_old_tablet()) {
|
|
||||||
if (OB_FAIL(mark_tablet_meta_blocks(mark_info, handle, macro_id_set, tmp_status))) {
|
|
||||||
LOG_WARN("fail to mark tablet meta blocks", K(ret));
|
|
||||||
} else if (OB_FAIL(mark_sstable_blocks(mark_info, handle, macro_id_set, tmp_status))) {
|
|
||||||
LOG_WARN("fail to mark tablet blocks", K(ret));
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (OB_FAIL(mark_tablet_block(mark_info, handle, macro_id_set, tmp_status))) {
|
LOG_WARN("fail to get next in-memory tablet", K(ret));
|
||||||
LOG_WARN("fail to mark tablet's macro blocks", K(ret), K(tmp_status), KPC(handle.get_obj()));
|
}
|
||||||
}
|
} else if (handle.get_obj()->is_old_tablet()) {
|
||||||
|
if (OB_FAIL(mark_tablet_meta_blocks(mark_info, handle, macro_id_set, tmp_status))) {
|
||||||
|
LOG_WARN("fail to mark tablet meta blocks", K(ret));
|
||||||
|
} else if (OB_FAIL(mark_sstable_blocks(mark_info, handle, macro_id_set, tmp_status))) {
|
||||||
|
LOG_WARN("fail to mark tablet blocks", K(ret));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (OB_FAIL(mark_tablet_block(mark_info, handle, macro_id_set, tmp_status))) {
|
||||||
|
LOG_WARN("fail to mark tablet's macro blocks", K(ret), K(tmp_status), KPC(handle.get_obj()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1468,12 +1451,6 @@ int ObBlockManager::mark_server_meta_blocks(
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ObBlockManager::continue_mark()
|
|
||||||
{
|
|
||||||
return (double) (io_device_->get_free_block_count())
|
|
||||||
/ (double) (super_block_.get_total_macro_block_count()) >= MARK_THRESHOLD;
|
|
||||||
}
|
|
||||||
|
|
||||||
int ObBlockManager::update_mark_info(
|
int ObBlockManager::update_mark_info(
|
||||||
const ObIArray<MacroBlockId> ¯o_block_list,
|
const ObIArray<MacroBlockId> ¯o_block_list,
|
||||||
common::hash::ObHashSet<MacroBlockId, common::hash::NoPthreadDefendMode> ¯o_id_set,
|
common::hash::ObHashSet<MacroBlockId, common::hash::NoPthreadDefendMode> ¯o_id_set,
|
||||||
|
|||||||
@ -389,7 +389,6 @@ private:
|
|||||||
common::hash::ObHashSet<MacroBlockId, common::hash::NoPthreadDefendMode> ¯o_id_set,
|
common::hash::ObHashSet<MacroBlockId, common::hash::NoPthreadDefendMode> ¯o_id_set,
|
||||||
ObMacroBlockMarkerStatus &tmp_status);
|
ObMacroBlockMarkerStatus &tmp_status);
|
||||||
int set_group_id(const uint64_t tenant_id);
|
int set_group_id(const uint64_t tenant_id);
|
||||||
bool continue_mark();
|
|
||||||
int do_sweep(MacroBlkIdMap &mark_info);
|
int do_sweep(MacroBlkIdMap &mark_info);
|
||||||
|
|
||||||
int update_mark_info(
|
int update_mark_info(
|
||||||
|
|||||||
@ -514,7 +514,6 @@ ObMacroBlockMarkerStatus::ObMacroBlockMarkerStatus()
|
|||||||
sweep_cost_time_(0),
|
sweep_cost_time_(0),
|
||||||
start_time_(0),
|
start_time_(0),
|
||||||
last_end_time_(0),
|
last_end_time_(0),
|
||||||
mark_finished_(false),
|
|
||||||
hold_info_()
|
hold_info_()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -561,7 +560,6 @@ void ObMacroBlockMarkerStatus::reuse()
|
|||||||
sweep_cost_time_ = 0;
|
sweep_cost_time_ = 0;
|
||||||
start_time_ = 0;
|
start_time_ = 0;
|
||||||
last_end_time_ = 0;
|
last_end_time_ = 0;
|
||||||
mark_finished_ = false;
|
|
||||||
hold_info_.reset();
|
hold_info_.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -970,7 +970,6 @@ public:
|
|||||||
K_(sweep_cost_time),
|
K_(sweep_cost_time),
|
||||||
KTIME_(start_time),
|
KTIME_(start_time),
|
||||||
KTIME_(last_end_time),
|
KTIME_(last_end_time),
|
||||||
K_(mark_finished),
|
|
||||||
K_(hold_info));
|
K_(hold_info));
|
||||||
public:
|
public:
|
||||||
int64_t total_block_count_;
|
int64_t total_block_count_;
|
||||||
@ -991,7 +990,6 @@ public:
|
|||||||
int64_t sweep_cost_time_;
|
int64_t sweep_cost_time_;
|
||||||
int64_t start_time_;
|
int64_t start_time_;
|
||||||
int64_t last_end_time_;
|
int64_t last_end_time_;
|
||||||
bool mark_finished_;
|
|
||||||
ObSimpleMacroBlockInfo hold_info_;
|
ObSimpleMacroBlockInfo hold_info_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user