Fix ddl kv mgr deadlock
This commit is contained in:
parent
5177ba45a4
commit
7738dbec19
@ -594,6 +594,8 @@ int ObTabletDDLKvMgr::online()
|
||||
tablet_handle,
|
||||
ObTabletCommon::NO_CHECK_GET_TABLET_TIMEOUT_US))) {
|
||||
LOG_WARN("get tablet handle failed", K(ret), K(ls_id_), K(tablet_id_));
|
||||
} else if (OB_FAIL(cleanup())) {
|
||||
LOG_WARN("failed to cleanup ddl kv mgr", K(ret), KPC(tablet_handle.get_obj()));
|
||||
} else if (!tablet_handle.get_obj()->get_tablet_meta().ddl_start_scn_.is_valid_and_not_min()) {
|
||||
LOG_DEBUG("no need to start ddl kv manager", K(ret), "tablet_meta", tablet_handle.get_obj()->get_tablet_meta());
|
||||
} else {
|
||||
|
@ -72,28 +72,6 @@ int ObLSDDLLogHandler::offline()
|
||||
TCWLockGuard guard(online_lock_);
|
||||
is_online_ = false;
|
||||
}
|
||||
ObLSTabletIterator tablet_iter(ObTabletCommon::NO_CHECK_GET_TABLET_TIMEOUT_US);
|
||||
if (OB_FAIL(ret)) {
|
||||
} else if (OB_FAIL(ls_->get_tablet_svr()->build_tablet_iter(tablet_iter))) {
|
||||
LOG_WARN("failed to build ls tablet iter", K(ret), K(ls_));
|
||||
} else {
|
||||
while (OB_SUCC(ret)) {
|
||||
ObDDLKvMgrHandle ddl_kv_mgr_handle;
|
||||
if (OB_FAIL(tablet_iter.get_next_ddl_kv_mgr(ddl_kv_mgr_handle))) {
|
||||
if (OB_ITER_END == ret) {
|
||||
ret = OB_SUCCESS;
|
||||
break;
|
||||
} else {
|
||||
LOG_WARN("failed to get ddl kv mgr", K(ret), K(ddl_kv_mgr_handle));
|
||||
}
|
||||
} else if (OB_UNLIKELY(!ddl_kv_mgr_handle.is_valid())) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("invalid tablet handle", K(ret), K(ddl_kv_mgr_handle));
|
||||
} else if (OB_FAIL(ddl_kv_mgr_handle.get_obj()->cleanup())) {
|
||||
LOG_WARN("ddl kv mgr cleanup failed", K(ret), "ls_meta", ls_->get_ls_meta(), "tablet_id", ddl_kv_mgr_handle.get_obj()->get_tablet_id());
|
||||
}
|
||||
}
|
||||
}
|
||||
FLOG_INFO("ddl log hanlder offline", K(ret), "ls_meta", ls_->get_ls_meta());
|
||||
return OB_SUCCESS;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user