fix defense when add flag in scheduler & use accurate start time to fill merge_info

This commit is contained in:
yangqise7en
2023-08-25 07:10:34 +00:00
committed by ob-robot
parent 4442f09e82
commit 82c85c5f0b
4 changed files with 8 additions and 2 deletions

View File

@ -125,7 +125,7 @@ void ObTabletMergeInfo::build_sstable_merge_info(const ObTabletMergeCtx &ctx)
sstable_merge_info_.ls_id_ = ctx.param_.ls_id_; sstable_merge_info_.ls_id_ = ctx.param_.ls_id_;
sstable_merge_info_.tablet_id_ = ctx.param_.tablet_id_; sstable_merge_info_.tablet_id_ = ctx.param_.tablet_id_;
sstable_merge_info_.compaction_scn_ = ctx.get_compaction_scn(); sstable_merge_info_.compaction_scn_ = ctx.get_compaction_scn();
sstable_merge_info_.merge_start_time_ = ObTimeUtility::fast_current_time(); sstable_merge_info_.merge_start_time_ = ctx.start_time_;
sstable_merge_info_.merge_type_ = ctx.is_tenant_major_merge_ ? ObMergeType::MAJOR_MERGE : ctx.param_.merge_type_; sstable_merge_info_.merge_type_ = ctx.is_tenant_major_merge_ ? ObMergeType::MAJOR_MERGE : ctx.param_.merge_type_;
sstable_merge_info_.progressive_merge_round_ = ctx.progressive_merge_round_; sstable_merge_info_.progressive_merge_round_ = ctx.progressive_merge_round_;
sstable_merge_info_.progressive_merge_num_ = ctx.progressive_merge_num_; sstable_merge_info_.progressive_merge_num_ = ctx.progressive_merge_num_;
@ -518,6 +518,7 @@ ObTabletMergeCtx::ObTabletMergeCtx(
ls_handle_(), ls_handle_(),
tablet_handle_(), tablet_handle_(),
sstable_logic_seq_(0), sstable_logic_seq_(0),
start_time_(0),
progressive_merge_num_(0), progressive_merge_num_(0),
progressive_merge_round_(0), progressive_merge_round_(0),
progressive_merge_step_(0), progressive_merge_step_(0),

View File

@ -222,7 +222,7 @@ struct ObTabletMergeCtx
ObTabletHandle tablet_handle_; ObTabletHandle tablet_handle_;
int16_t sstable_logic_seq_; int16_t sstable_logic_seq_;
int64_t start_time_;
int64_t progressive_merge_num_; int64_t progressive_merge_num_;
int64_t progressive_merge_round_; int64_t progressive_merge_round_;
int64_t progressive_merge_step_; int64_t progressive_merge_step_;

View File

@ -724,6 +724,7 @@ int ObTabletMergeExecutePrepareTask::process()
} else if (OB_ISNULL(ctx_)) { } else if (OB_ISNULL(ctx_)) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
LOG_WARN("ctx is unexpected null", K(ret), K(ctx_)); LOG_WARN("ctx is unexpected null", K(ret), K(ctx_));
} else if (FALSE_IT(ctx_->start_time_ = ObTimeUtility::fast_current_time())) {
} else if (OB_FAIL(get_tablet_and_result())) { } else if (OB_FAIL(get_tablet_and_result())) {
LOG_WARN("failed to get tablet and result", K(ret)); LOG_WARN("failed to get tablet and result", K(ret));
} else if (OB_FAIL(ctx_->get_schema_and_gene_from_result(result_))) { } else if (OB_FAIL(ctx_->get_schema_and_gene_from_result(result_))) {
@ -943,6 +944,7 @@ int ObTabletMergePrepareTask::process()
} else if (OB_ISNULL(ctx = merge_dag_->get_ctx())) { } else if (OB_ISNULL(ctx = merge_dag_->get_ctx())) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
LOG_WARN("ctx is unexpected null", K(ret), KP(ctx), KPC(merge_dag_)); LOG_WARN("ctx is unexpected null", K(ret), KP(ctx), KPC(merge_dag_));
} else if (FALSE_IT(ctx->start_time_ = ObTimeUtility::fast_current_time())) {
} else if (OB_UNLIKELY(is_major_merge_type(ctx->param_.merge_type_) } else if (OB_UNLIKELY(is_major_merge_type(ctx->param_.merge_type_)
&& !MTL(ObTenantTabletScheduler *)->could_major_merge_start())) { && !MTL(ObTenantTabletScheduler *)->could_major_merge_start())) {
ret = OB_CANCELED; ret = OB_CANCELED;

View File

@ -695,6 +695,9 @@ int ObProhibitScheduleMediumMap::add_flag(const ObLSID &ls_id, const ProhibitFla
} else if (tmp_flag != input_flag) { } else if (tmp_flag != input_flag) {
ret = OB_EAGAIN; ret = OB_EAGAIN;
LOG_TRACE("flag in conflict", K(ret), K(ls_id), K(tmp_flag), K(input_flag)); LOG_TRACE("flag in conflict", K(ret), K(ls_id), K(tmp_flag), K(input_flag));
} else { // tmp_flag == input_flag
ret = OB_ERR_UNEXPECTED;
LOG_TRACE("flag in already exist", K(ret), K(ls_id), K(tmp_flag), K(input_flag));
} }
} }
return ret; return ret;