use the latest start scn to allocate ddl kv.

This commit is contained in:
obdev
2024-01-09 14:12:58 +00:00
committed by ob-robot
parent 875dc52f26
commit 4d02998322
11 changed files with 89 additions and 57 deletions

View File

@ -378,7 +378,6 @@ int ObComplementDataContext::write_start_log(const ObComplementDataParam &param)
{
int ret = OB_SUCCESS;
ObITable::TableKey hidden_table_key;
SCN start_scn;
if (OB_UNLIKELY(!is_inited_)) {
ret = OB_NOT_INIT;
LOG_WARN("ObComplementDataContext not init", K(ret));
@ -396,8 +395,11 @@ int ObComplementDataContext::write_start_log(const ObComplementDataParam &param)
ret = OB_ERR_UNEXPECTED;
LOG_WARN("unexpected err", K(ret), K(MTL_ID()));
} else if (OB_FAIL(tenant_direct_load_mgr->open_tablet_direct_load(true, /*is_full_direct_load*/
param.dest_ls_id_, param.dest_tablet_id_, context_id_, start_scn, tablet_direct_load_mgr_handle_))) {
param.dest_ls_id_, param.dest_tablet_id_, context_id_, start_scn_, tablet_direct_load_mgr_handle_))) {
LOG_WARN("write ddl start log failed", K(ret));
} else if (OB_UNLIKELY(!start_scn_.is_valid_and_not_min())) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("invalid start scn", K(ret), K(start_scn_));
}
LOG_INFO("complement task start ddl redo success", K(ret), K(param));
}
@ -1367,10 +1369,13 @@ int ObComplementWriteTask::append_row(ObScan *scan)
} else if (OB_UNLIKELY(!direct_load_hdl.get_full_obj()->get_start_scn().is_valid_and_not_min())) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("unexpected err", K(ret), K(direct_load_hdl.get_full_obj()->get_start_scn()));
} else if (OB_UNLIKELY(context_->start_scn_ != direct_load_hdl.get_full_obj()->get_start_scn())) {
ret = OB_TASK_EXPIRED;
LOG_WARN("task expired", K(ret), K(context_->start_scn_), "start_scn", direct_load_hdl.get_full_obj()->get_start_scn());
} else if (OB_FAIL(callback.init(DDL_MB_DATA_TYPE,
hidden_table_key,
param_->task_id_,
direct_load_hdl.get_full_obj()->get_start_scn(),
context_->start_scn_,
param_->data_format_version_,
&sstable_redo_writer))) {
LOG_WARN("fail to init data callback", K(ret), K(hidden_table_key));