Fix flashback error code when read snapshot recycled

This commit is contained in:
JiahuaChen
2024-02-08 19:45:40 +00:00
committed by ob-robot
parent df48d0946b
commit 76f6145117
3 changed files with 6 additions and 6 deletions

View File

@ -321,7 +321,7 @@ int ObDASScanOp::open_op()
LOG_WARN("init scan param failed", K(ret)); LOG_WARN("init scan param failed", K(ret));
} else if (OB_FAIL(tsc_service.table_scan(scan_param_, result_))) { } else if (OB_FAIL(tsc_service.table_scan(scan_param_, result_))) {
if (OB_SNAPSHOT_DISCARDED == ret && scan_param_.fb_snapshot_.is_valid()) { if (OB_SNAPSHOT_DISCARDED == ret && scan_param_.fb_snapshot_.is_valid()) {
ret = OB_TABLE_DEFINITION_CHANGED; ret = OB_INVALID_QUERY_TIMESTAMP;
} else if (OB_TRY_LOCK_ROW_CONFLICT != ret) { } else if (OB_TRY_LOCK_ROW_CONFLICT != ret) {
LOG_WARN("fail to scan table", K(scan_param_), K(ret)); LOG_WARN("fail to scan table", K(scan_param_), K(ret));
} }
@ -371,7 +371,6 @@ int ObDASScanOp::release_op()
//need to clear the flag:need_switch_param_ //need to clear the flag:need_switch_param_
//otherwise table_rescan will jump to the switch iterator path in retry //otherwise table_rescan will jump to the switch iterator path in retry
scan_param_.need_switch_param_ = false; scan_param_.need_switch_param_ = false;
scan_param_.partition_guard_ = nullptr;
scan_param_.destroy_schema_guard(); scan_param_.destroy_schema_guard();
if (retry_alloc_ != nullptr) { if (retry_alloc_ != nullptr) {

View File

@ -46,7 +46,6 @@ struct ObStorageDatum;
} }
namespace storage namespace storage
{ {
class ObIPartitionGroupGuard;
// //
// Project storage output row to expression array, the core project logic is: // Project storage output row to expression array, the core project logic is:
@ -135,7 +134,6 @@ public:
table_param_(NULL), table_param_(NULL),
allocator_(&CURRENT_CONTEXT->get_arena_allocator()), allocator_(&CURRENT_CONTEXT->get_arena_allocator()),
need_scn_(false), need_scn_(false),
partition_guard_(NULL),
need_switch_param_(false), need_switch_param_(false),
is_thread_scope_(true) is_thread_scope_(true)
{} {}
@ -150,7 +148,6 @@ public:
common::ObIAllocator *allocator_; //stmt level allocator, only be free at the end of query common::ObIAllocator *allocator_; //stmt level allocator, only be free at the end of query
common::SampleInfo sample_info_; common::SampleInfo sample_info_;
bool need_scn_; bool need_scn_;
ObIPartitionGroupGuard *partition_guard_; // remove after SQL adopt tablet
bool need_switch_param_; bool need_switch_param_;
OB_INLINE virtual bool is_valid() const { OB_INLINE virtual bool is_valid() const {
return snapshot_.valid_ && ObVTableScanParam::is_valid(); return snapshot_.valid_ && ObVTableScanParam::is_valid();

View File

@ -540,7 +540,11 @@ int ObAccessService::check_read_allowed_(
if (OB_FAIL(ret)) { if (OB_FAIL(ret)) {
} else if (OB_FAIL(construct_store_ctx_other_variables_(*ls, tablet_id, scan_param.timeout_, } else if (OB_FAIL(construct_store_ctx_other_variables_(*ls, tablet_id, scan_param.timeout_,
ctx.mvcc_acc_ctx_.get_snapshot_version(), tablet_handle, ctx_guard))) { ctx.mvcc_acc_ctx_.get_snapshot_version(), tablet_handle, ctx_guard))) {
LOG_WARN("failed to check replica allow to read", K(ret), K(tablet_id), "timeout", scan_param.timeout_); if (OB_SNAPSHOT_DISCARDED == ret && scan_param.fb_snapshot_.is_valid()) {
ret = OB_TABLE_DEFINITION_CHANGED;
} else {
LOG_WARN("failed to check replica allow to read", K(ret), K(tablet_id), "timeout", scan_param.timeout_);
}
} }
} }
return ret; return ret;