add task hash map to das ref
This commit is contained in:
@ -690,7 +690,8 @@ int ObTableScanOp::prepare_das_task()
|
||||
}
|
||||
} else if (OB_LIKELY(nullptr == MY_CTDEF.das_dppr_tbl_)) {
|
||||
ObDASTableLoc *table_loc = tsc_rtdef_.scan_rtdef_.table_loc_;
|
||||
FOREACH_X(node, table_loc->tablet_locs_, OB_SUCC(ret)) {
|
||||
for (DASTabletLocListIter node = table_loc->tablet_locs_begin();
|
||||
OB_SUCC(ret) && node != table_loc->tablet_locs_end(); ++node) {
|
||||
ObDASTabletLoc *tablet_loc = *node;
|
||||
if (OB_FAIL(create_one_das_task(tablet_loc))) {
|
||||
LOG_WARN("create one das task failed", K(ret));
|
||||
@ -807,7 +808,7 @@ int ObTableScanOp::init_table_scan_rtdef()
|
||||
if (OB_FAIL(init_das_scan_rtdef(scan_ctdef, scan_rtdef, loc_meta))) {
|
||||
LOG_WARN("init das scan rtdef failed", K(ret));
|
||||
} else if (!MY_SPEC.use_dist_das_ && !MY_SPEC.gi_above_ && !scan_rtdef.table_loc_->empty()) {
|
||||
MY_INPUT.tablet_loc_ = scan_rtdef.table_loc_->tablet_locs_.get_first();
|
||||
MY_INPUT.tablet_loc_ = scan_rtdef.table_loc_->get_first_tablet_loc();
|
||||
}
|
||||
}
|
||||
if (OB_SUCC(ret) && MY_CTDEF.lookup_ctdef_ != nullptr) {
|
||||
@ -2062,9 +2063,8 @@ int ObTableScanOp::get_access_tablet_loc(ObGranuleTaskInfo &info)
|
||||
iter_end_ = true;
|
||||
ret = OB_SUCCESS;
|
||||
}
|
||||
} else if (OB_FAIL(ObDASUtils::get_tablet_loc_by_id(info.tablet_loc_->tablet_id_,
|
||||
*tsc_rtdef_.scan_rtdef_.table_loc_,
|
||||
MY_INPUT.tablet_loc_))) {
|
||||
} else if (OB_FAIL(tsc_rtdef_.scan_rtdef_.table_loc_->get_tablet_loc_by_id(info.tablet_loc_->tablet_id_,
|
||||
MY_INPUT.tablet_loc_))) {
|
||||
//need use `get_tablet_loc_by_id` to find my px work thread's tablet_loc,
|
||||
//because the tablet_loc in SQC maybe shared with other px work thread,
|
||||
//the tablet loc maybe modify in das partition retry
|
||||
|
||||
Reference in New Issue
Block a user