fix check oss permission
This commit is contained in:
@ -179,7 +179,7 @@ int ObBackupConnectivityCheckManager::set_connectivity_check_path_(
|
|||||||
} else if (OB_FAIL(ObBackupStorageInfoOperator::get_check_file_name(
|
} else if (OB_FAIL(ObBackupStorageInfoOperator::get_check_file_name(
|
||||||
*sql_proxy_, tenant_id_, backup_dest, check_file_name))) {
|
*sql_proxy_, tenant_id_, backup_dest, check_file_name))) {
|
||||||
LOG_WARN("failed to get check file name", K(ret), K_(tenant_id));
|
LOG_WARN("failed to get check file name", K(ret), K_(tenant_id));
|
||||||
} else if (OB_FAIL(path.join(check_file_name, ObBackupFileSuffix::BACKUP))) {
|
} else if (OB_FAIL(path.join(check_file_name, ObBackupFileSuffix::NONE))) { // check_file_name already include suffix
|
||||||
LOG_WARN("failed to join check file name", K(ret), K_(tenant_id));
|
LOG_WARN("failed to join check file name", K(ret), K_(tenant_id));
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@ -275,7 +275,7 @@ int ObBackupCheckFile::set_connectivity_check_name_()
|
|||||||
} else if (OB_FAIL(backup_time_to_strftime(check_time_s, buff, sizeof(buff), pos, 'T'/* concat */))) {
|
} else if (OB_FAIL(backup_time_to_strftime(check_time_s, buff, sizeof(buff), pos, 'T'/* concat */))) {
|
||||||
LOG_WARN("failed to convert time", K(ret));
|
LOG_WARN("failed to convert time", K(ret));
|
||||||
} else if (OB_FAIL(databuff_printf(connectivity_file_name_, sizeof(connectivity_file_name_),
|
} else if (OB_FAIL(databuff_printf(connectivity_file_name_, sizeof(connectivity_file_name_),
|
||||||
"%lu_%s_%s_%s", tenant_id_, "connect", "file", buff))) {
|
"%lu_%s_%s_%s%s", tenant_id_, "connect", "file", buff, OB_BACKUP_SUFFIX))) {
|
||||||
LOG_WARN("failed to set connectivity file name", K(ret));
|
LOG_WARN("failed to set connectivity file name", K(ret));
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@ -411,7 +411,7 @@ int ObBackupCheckFile::create_connectivity_check_file(
|
|||||||
} else if (false == is_match) {
|
} else if (false == is_match) {
|
||||||
if (OB_FAIL(set_connectivity_check_name_())) {
|
if (OB_FAIL(set_connectivity_check_name_())) {
|
||||||
LOG_WARN("failed to set check file name", K(ret), K_(tenant_id));
|
LOG_WARN("failed to set check file name", K(ret), K_(tenant_id));
|
||||||
} else if (OB_FAIL(path.join(connectivity_file_name_, ObBackupFileSuffix::BACKUP))) {
|
} else if (OB_FAIL(path.join(connectivity_file_name_, ObBackupFileSuffix::NONE))) { // connectivity_file_name_ already include suffix
|
||||||
LOG_WARN("failed to join connectivity file name", K(ret), K_(tenant_id));
|
LOG_WARN("failed to join connectivity file name", K(ret), K_(tenant_id));
|
||||||
} else if (OB_FAIL(generate_format_desc_(backup_dest, check_desc))) {
|
} else if (OB_FAIL(generate_format_desc_(backup_dest, check_desc))) {
|
||||||
LOG_WARN("failed to set buffer", K(ret), K_(tenant_id));
|
LOG_WARN("failed to set buffer", K(ret), K_(tenant_id));
|
||||||
@ -479,11 +479,13 @@ int ObBackupCheckFile::delete_permission_check_file(const ObBackupDest &backup_d
|
|||||||
|
|
||||||
int ObBackupCheckFile::get_permission_check_file_path_(
|
int ObBackupCheckFile::get_permission_check_file_path_(
|
||||||
const ObBackupDest &backup_dest,
|
const ObBackupDest &backup_dest,
|
||||||
|
bool is_appender,
|
||||||
share::ObBackupPath &path)
|
share::ObBackupPath &path)
|
||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
int64_t check_time_s = ObTimeUtility::current_time() / 1000/ 1000;
|
int64_t check_time_s = ObTimeUtility::current_time() / 1000/ 1000;
|
||||||
char buff[OB_BACKUP_MAX_TIME_STR_LEN] = { 0 };
|
char buff[OB_BACKUP_MAX_TIME_STR_LEN] = { 0 };
|
||||||
|
const char *prefix = is_appender ? "append" : "put";
|
||||||
int64_t pos = 0;
|
int64_t pos = 0;
|
||||||
if (!is_inited_) {
|
if (!is_inited_) {
|
||||||
ret = OB_NOT_INIT;
|
ret = OB_NOT_INIT;
|
||||||
@ -493,9 +495,9 @@ int ObBackupCheckFile::get_permission_check_file_path_(
|
|||||||
} else if (OB_FAIL(backup_time_to_strftime(check_time_s, buff, sizeof(buff), pos, 'T'/* concat */))) {
|
} else if (OB_FAIL(backup_time_to_strftime(check_time_s, buff, sizeof(buff), pos, 'T'/* concat */))) {
|
||||||
LOG_WARN("failed to convert time", K(ret), K(backup_dest));
|
LOG_WARN("failed to convert time", K(ret), K(backup_dest));
|
||||||
} else if (OB_FAIL(databuff_printf(permission_file_name_, sizeof(permission_file_name_),
|
} else if (OB_FAIL(databuff_printf(permission_file_name_, sizeof(permission_file_name_),
|
||||||
"%lu_%s_%s_%s", tenant_id_, "permission", "file", buff))) {
|
"%lu_%s_%s_%s_%s%s", tenant_id_, prefix, "permission", "file", buff, OB_BACKUP_SUFFIX))) {
|
||||||
LOG_WARN("failed to set permission file name", K(ret));
|
LOG_WARN("failed to set permission file name", K(ret), K(buff));
|
||||||
} else if (OB_FAIL(path.join(permission_file_name_, ObBackupFileSuffix::BACKUP))) {
|
} else if (OB_FAIL(path.join(permission_file_name_, ObBackupFileSuffix::NONE))) { // permission_file_name_ already include suffix
|
||||||
LOG_WARN("failed to join permission file name", K(ret), K_(permission_file_name));
|
LOG_WARN("failed to join permission file name", K(ret), K_(permission_file_name));
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@ -523,9 +525,9 @@ int ObBackupCheckFile::check_appender_permission_(const ObBackupDest &backup_des
|
|||||||
if (!is_inited_) {
|
if (!is_inited_) {
|
||||||
ret = OB_NOT_INIT;
|
ret = OB_NOT_INIT;
|
||||||
LOG_WARN("backup check file not init", K(ret));
|
LOG_WARN("backup check file not init", K(ret));
|
||||||
} else if (OB_FAIL(get_permission_check_file_path_(backup_dest, path))) {
|
} else if (OB_FAIL(get_permission_check_file_path_(backup_dest, true/*is_appender*/, path))) {
|
||||||
LOG_WARN("failed to get permission check file path", K(ret), K_(tenant_id), K(backup_dest));
|
LOG_WARN("failed to get permission check file path", K(ret), K_(tenant_id), K(backup_dest));
|
||||||
} else if (OB_FAIL(util.set_access_type(&iod_opts, true, DEFAULT_OPT_ARG_NUM))) {
|
} else if (OB_FAIL(util.set_access_type(&iod_opts, true/*is_appender*/, DEFAULT_OPT_ARG_NUM))) {
|
||||||
LOG_WARN("fail to set access type");
|
LOG_WARN("fail to set access type");
|
||||||
} else if (OB_FAIL(util.set_append_strategy(&iod_opts, is_data_file, epoch, DEFAULT_OPT_ARG_NUM))) {
|
} else if (OB_FAIL(util.set_append_strategy(&iod_opts, is_data_file, epoch, DEFAULT_OPT_ARG_NUM))) {
|
||||||
LOG_WARN("fail to set append strategy");
|
LOG_WARN("fail to set append strategy");
|
||||||
@ -581,7 +583,7 @@ int ObBackupCheckFile::check_io_permission(const ObBackupDest &backup_dest)
|
|||||||
} else if (!backup_dest.is_valid()) {
|
} else if (!backup_dest.is_valid()) {
|
||||||
ret = OB_INVALID_ARGUMENT;
|
ret = OB_INVALID_ARGUMENT;
|
||||||
LOG_WARN("backup dest is valid", K(ret), K_(tenant_id));
|
LOG_WARN("backup dest is valid", K(ret), K_(tenant_id));
|
||||||
} else if (OB_FAIL(get_permission_check_file_path_(backup_dest, path))) {
|
} else if (OB_FAIL(get_permission_check_file_path_(backup_dest, false/*is_appender*/, path))) {
|
||||||
LOG_WARN("failed to get permission check file path", K(ret), K_(tenant_id));
|
LOG_WARN("failed to get permission check file path", K(ret), K_(tenant_id));
|
||||||
} else if (OB_FAIL(generate_format_desc_(backup_dest, check_desc))) {
|
} else if (OB_FAIL(generate_format_desc_(backup_dest, check_desc))) {
|
||||||
LOG_WARN("failed to set buffer", K(ret), K_(tenant_id));
|
LOG_WARN("failed to set buffer", K(ret), K_(tenant_id));
|
||||||
@ -612,15 +614,7 @@ int ObBackupCheckFile::check_io_permission(const ObBackupDest &backup_dest)
|
|||||||
ret = OB_BACKUP_PERMISSION_DENIED;
|
ret = OB_BACKUP_PERMISSION_DENIED;
|
||||||
}
|
}
|
||||||
LOG_WARN("failed to read single file", K(ret));
|
LOG_WARN("failed to read single file", K(ret));
|
||||||
} else if (OB_FAIL(check_appender_permission_(backup_dest))){
|
|
||||||
if (is_permission_error_(ret)) {
|
|
||||||
ROOTSERVICE_EVENT_ADD("connectivity_check", "permission check",
|
|
||||||
"tenant_id", tenant_id_, "error_code", ret, "comment", "appender write");
|
|
||||||
ret = OB_BACKUP_PERMISSION_DENIED;
|
|
||||||
}
|
}
|
||||||
LOG_WARN("failed to appender permission", K(ret));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (write_ok && (OB_SUCCESS != (tmp_ret = util.del_file(path.get_obstr(), backup_dest.get_storage_info())))) {
|
if (write_ok && (OB_SUCCESS != (tmp_ret = util.del_file(path.get_obstr(), backup_dest.get_storage_info())))) {
|
||||||
if (is_permission_error_(tmp_ret)) {
|
if (is_permission_error_(tmp_ret)) {
|
||||||
ROOTSERVICE_EVENT_ADD("connectivity_check", "permission check",
|
ROOTSERVICE_EVENT_ADD("connectivity_check", "permission check",
|
||||||
@ -630,6 +624,15 @@ int ObBackupCheckFile::check_io_permission(const ObBackupDest &backup_dest)
|
|||||||
ret = (OB_SUCCESS == ret) ? tmp_ret : ret;
|
ret = (OB_SUCCESS == ret) ? tmp_ret : ret;
|
||||||
LOG_WARN("failed to del file", K(tmp_ret), K(ret), K(path), K(backup_dest));
|
LOG_WARN("failed to del file", K(tmp_ret), K(ret), K(path), K(backup_dest));
|
||||||
}
|
}
|
||||||
|
if (OB_FAIL(ret)) {
|
||||||
|
} else if (OB_FAIL(check_appender_permission_(backup_dest))){
|
||||||
|
if (is_permission_error_(ret)) {
|
||||||
|
ROOTSERVICE_EVENT_ADD("connectivity_check", "permission check",
|
||||||
|
"tenant_id", tenant_id_, "error_code", ret, "comment", "appender write");
|
||||||
|
ret = OB_BACKUP_PERMISSION_DENIED;
|
||||||
|
}
|
||||||
|
LOG_WARN("failed to appender permission", K(ret));
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -68,6 +68,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
int get_permission_check_file_path_(
|
int get_permission_check_file_path_(
|
||||||
const share::ObBackupDest &backup_dest,
|
const share::ObBackupDest &backup_dest,
|
||||||
|
bool is_appender,
|
||||||
share::ObBackupPath &path);
|
share::ObBackupPath &path);
|
||||||
int check_appender_permission_(const share::ObBackupDest &backup_dest);
|
int check_appender_permission_(const share::ObBackupDest &backup_dest);
|
||||||
int set_connectivity_check_name_();
|
int set_connectivity_check_name_();
|
||||||
|
Reference in New Issue
Block a user