fixed remove tenant hang because of rename always return failed.

This commit is contained in:
HaHaJeff
2024-02-08 07:16:12 +00:00
committed by ob-robot
parent 212662cdcf
commit 77513bde39
2 changed files with 21 additions and 6 deletions

View File

@ -436,7 +436,7 @@ int PalfEnvImpl::create_palf_handle_impl_(const int64_t palf_id,
PalfHandleImplFactory::free(palf_handle_impl);
palf_handle_impl = NULL;
if (OB_ENTRY_NOT_EXIST == palf_handle_impl_map_.contains_key(hash_map_key)) {
remove_directory(base_dir);
remove_directory_while_exist_(base_dir);
}
}
@ -560,8 +560,8 @@ int PalfEnvImpl::create_directory(const char *base_dir)
PALF_LOG(INFO, "prepare_directory_for_creating_ls success", K(ret), K(base_dir));
}
if (OB_FAIL(ret)) {
remove_directory(tmp_base_dir);
remove_directory(base_dir);
remove_directory_while_exist_(tmp_base_dir);
remove_directory_while_exist_(base_dir);
}
return ret;
}
@ -585,9 +585,9 @@ int PalfEnvImpl::remove_directory(const char *log_dir)
bool result = true;
do {
if (OB_FAIL(FileDirectoryUtils::is_exists(tmp_log_dir, result))) {
CLOG_LOG(WARN, "check directory exists failed", KPC(this), K(log_dir));
PALF_LOG(WARN, "check directory exists failed", KPC(this), K(log_dir));
} else if (!result) {
CLOG_LOG(WARN, "directory not exists", KPC(this), K(log_dir));
PALF_LOG(WARN, "directory not exists", KPC(this), K(log_dir));
break;
} else if (OB_FAIL(remove_directory_rec(tmp_log_dir, log_block_pool_))) {
PALF_LOG(WARN, "remove_directory_rec failed", K(tmp_log_dir), KP(log_block_pool_));
@ -1221,6 +1221,7 @@ int PalfEnvImpl::move_incomplete_palf_into_tmp_dir_(const int64_t palf_id)
PALF_LOG(WARN, "del palf from map failed, unexpected", K(ret),
K(palf_id), KPC(this));;
} else if (OB_FAIL(check_tmp_log_dir_exist_(tmp_dir_exist))) {
PALF_LOG(WARN, "check_tmp_log_dir_exist_ failed", K(ret), KPC(this), K(tmp_log_dir_));
} else if (false == tmp_dir_exist && (-1 == ::mkdir(tmp_log_dir_, mode))) {
ret = convert_sys_errno();
PALF_LOG(ERROR, "mkdir tmp log dir failed", K(ret), KPC(this), K(tmp_log_dir_));
@ -1391,5 +1392,19 @@ int PalfEnvImpl::check_can_update_log_disk_options_(const PalfDiskOptions &disk_
return ret;
}
int PalfEnvImpl::remove_directory_while_exist_(const char *log_dir)
{
int ret = OB_SUCCESS;
bool result = true;
if (OB_FAIL(FileDirectoryUtils::is_exists(log_dir, result))) {
PALF_LOG(WARN, "check directory exists failed", KPC(this), K(log_dir));
} else if (!result) {
PALF_LOG(WARN, "directory not exist, remove_directory success!", K(log_dir), K(result));
} else if (OB_FAIL(remove_directory(log_dir))) {
PALF_LOG(WARN, "remove_directory failed", K(log_dir), K(result));
} else {}
return ret;
}
} // end namespace palf
} // end namespace oceanbase

View File

@ -355,7 +355,7 @@ private:
LogIOWorkerConfig &config);
int check_can_update_log_disk_options_(const PalfDiskOptions &disk_options);
int remove_directory_while_exist_(const char *log_dir);
private:
typedef common::RWLock RWLock;
typedef RWLock::RLockGuard RLockGuard;