fix ddl_epoch bug promote_ddl_epoch cocurrent ignore return value

This commit is contained in:
obdev
2023-02-08 11:07:59 +08:00
committed by ob-robot
parent 0a63534f58
commit c91a1e8f70
3 changed files with 10 additions and 2 deletions

View File

@ -71,6 +71,7 @@ int ObDDLEpochMgr::remove_ddl_epoch(const uint64_t tenant_id)
LOG_WARN("ObDDLEpochMgr not init", KR(ret));
} else {
SpinWLockGuard guard(lock_);
LOG_INFO("remove_ddl_epoch", K(ddl_epoch_stat_), K(tenant_id));
for (int i = 0; i < ddl_epoch_stat_.count(); i++) {
if (ddl_epoch_stat_.at(i).tenant_id_ == tenant_id) {
if (OB_FAIL(ddl_epoch_stat_.remove(i))) {
@ -91,6 +92,7 @@ int ObDDLEpochMgr::remove_all_ddl_epoch()
LOG_WARN("ObDDLEpochMgr not init", KR(ret));
} else {
SpinWLockGuard guard(lock_);
LOG_INFO("remove_all_ddl_epoch", K(ddl_epoch_stat_));
ddl_epoch_stat_.reuse();
}
return ret;
@ -149,6 +151,8 @@ int ObDDLEpochMgr::promote_ddl_epoch(const uint64_t tenant_id, int64_t wait_us,
} else {
LOG_WARN("get_ddl_epoch fail", KR(ret), K(tenant_id));
}
} else {
ddl_epoch_ret = ddl_epoch_tmp;
}
if (OB_SUCC(ret) && need_promote) {
int64_t new_ddl_epoch = 0;

View File

@ -31,6 +31,9 @@ int ObDDLTransController::init(share::schema::ObMultiVersionSchemaService *schem
}
}
if (OB_FAIL(ret)) {
} else if (OB_ISNULL(schema_service)) {
ret = OB_INVALID_ARGUMENT;
LOG_WARN("schema_service is null", KR(ret));
} else if (OB_FAIL(tenants_.create(10))) {
LOG_WARN("hashset create fail", KR(ret));
} else if (OB_FAIL(tenant_for_ddl_trans_new_lock_.create(10))) {
@ -51,8 +54,10 @@ ObDDLTransController::~ObDDLTransController()
wait_cond_.signal();
ObThreadPool::wait();
ObThreadPool::destroy();
schema_service_ = NULL;
tasks_.destroy();
tenants_.destroy();
tenant_for_ddl_trans_new_lock_.destroy();
schema_service_ = NULL;
inited_ = false;
}

View File

@ -63,7 +63,6 @@ private:
share::schema::ObMultiVersionSchemaService *schema_service_;
common::hash::ObHashSet<uint64_t> tenants_;
common::ObTimer timer_;
// for compat
common::SpinRWLock lock_for_tenant_set_;