diff --git a/src/share/backup/ob_backup_connectivity.cpp b/src/share/backup/ob_backup_connectivity.cpp index f4ee1994dc176ca086160d7bb49aefc68d9f63a6..6e7dabb3844a454a663b7ecbfabb752a2714bb36 100644 --- a/src/share/backup/ob_backup_connectivity.cpp +++ b/src/share/backup/ob_backup_connectivity.cpp @@ -179,7 +179,7 @@ int ObBackupConnectivityCheckManager::set_connectivity_check_path_( } else if (OB_FAIL(ObBackupStorageInfoOperator::get_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)); - } 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)); } 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 */))) { LOG_WARN("failed to convert time", K(ret)); } 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)); } return ret; @@ -411,7 +411,7 @@ int ObBackupCheckFile::create_connectivity_check_file( } else if (false == is_match) { if (OB_FAIL(set_connectivity_check_name_())) { 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)); } else if (OB_FAIL(generate_format_desc_(backup_dest, check_desc))) { 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_( const ObBackupDest &backup_dest, + bool is_appender, share::ObBackupPath &path) { int ret = OB_SUCCESS; int64_t check_time_s = ObTimeUtility::current_time() / 1000/ 1000; char buff[OB_BACKUP_MAX_TIME_STR_LEN] = { 0 }; + const char *prefix = is_appender ? "append" : "put"; int64_t pos = 0; if (!is_inited_) { 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 */))) { LOG_WARN("failed to convert time", K(ret), K(backup_dest)); } else if (OB_FAIL(databuff_printf(permission_file_name_, sizeof(permission_file_name_), - "%lu_%s_%s_%s", tenant_id_, "permission", "file", buff))) { - LOG_WARN("failed to set permission file name", K(ret)); - } else if (OB_FAIL(path.join(permission_file_name_, ObBackupFileSuffix::BACKUP))) { + "%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), K(buff)); + } 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)); } return ret; @@ -523,9 +525,9 @@ int ObBackupCheckFile::check_appender_permission_(const ObBackupDest &backup_des if (!is_inited_) { ret = OB_NOT_INIT; 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)); - } 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"); } 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"); @@ -581,7 +583,7 @@ int ObBackupCheckFile::check_io_permission(const ObBackupDest &backup_dest) } else if (!backup_dest.is_valid()) { ret = OB_INVALID_ARGUMENT; 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)); } else if (OB_FAIL(generate_format_desc_(backup_dest, check_desc))) { 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; } 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 (is_permission_error_(tmp_ret)) { 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; 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; } diff --git a/src/share/backup/ob_backup_connectivity.h b/src/share/backup/ob_backup_connectivity.h index 21d3339ffe2c3bab9430803fa530c249147f582b..e003a91a43397cdc8e3cf5e4329dc65ba00f4d14 100644 --- a/src/share/backup/ob_backup_connectivity.h +++ b/src/share/backup/ob_backup_connectivity.h @@ -68,6 +68,7 @@ public: private: int get_permission_check_file_path_( const share::ObBackupDest &backup_dest, + bool is_appender, share::ObBackupPath &path); int check_appender_permission_(const share::ObBackupDest &backup_dest); int set_connectivity_check_name_();