[CP] set checksum_type to md5 when setting backup_data_dest/log_archive_dest and no checksum type is specified
This commit is contained in:
parent
0db4670219
commit
82caf443a6
4
deps/oblib/src/lib/restore/ob_storage.cpp
vendored
4
deps/oblib/src/lib/restore/ob_storage.cpp
vendored
@ -104,6 +104,10 @@ bool is_storage_type_match(const common::ObString &uri, const ObStorageType &typ
|
||||
|| (OB_STORAGE_FILE == type && uri.prefix_match(OB_FILE_PREFIX));
|
||||
}
|
||||
|
||||
bool is_object_storage_type(const ObStorageType &type)
|
||||
{ return ObStorageType::OB_STORAGE_FILE != type
|
||||
&& ObStorageType::OB_STORAGE_MAX_TYPE != type;
|
||||
}
|
||||
bool is_io_error(const int result)
|
||||
{
|
||||
return OB_IO_ERROR == result || OB_OSS_ERROR == result || OB_COS_ERROR == result || OB_S3_ERROR == result;
|
||||
|
2
deps/oblib/src/lib/restore/ob_storage.h
vendored
2
deps/oblib/src/lib/restore/ob_storage.h
vendored
@ -43,7 +43,7 @@ int validate_uri_type(const common::ObString &uri);
|
||||
int get_storage_type_from_name(const char *type_str, ObStorageType &type);
|
||||
const char *get_storage_type_str(const ObStorageType &type);
|
||||
bool is_io_error(const int result);
|
||||
|
||||
bool is_object_storage_type(const ObStorageType &type);
|
||||
|
||||
class ObExternalIOCounter final
|
||||
{
|
||||
|
@ -445,6 +445,8 @@ int ObDataBackupDestConfigParser::check_before_update_inner_config(obrpc::ObSrvR
|
||||
} else if (!config_items_.at(0).value_.empty()) {
|
||||
if (OB_FAIL(backup_dest.assign(config_items_.at(0).value_.ptr()))) {
|
||||
LOG_WARN("fail to assign backup dest", K(ret), K_(tenant_id), K_(config_items));
|
||||
} else if (OB_FAIL(ObIBackupConfigItemParser::set_default_checksum_type(backup_dest))) {
|
||||
LOG_WARN("fail to check dest checksum type", K(ret), K(backup_dest));
|
||||
} else if (OB_FAIL(dest_mgr.init(tenant_id_, dest_type, backup_dest, trans))) {
|
||||
LOG_WARN("fail to init dest manager", K(ret), K_(tenant_id), K(backup_dest));
|
||||
} else if (OB_FAIL(dest_mgr.check_dest_validity(rpc_proxy, false/*need_format_file*/))) {
|
||||
@ -497,6 +499,8 @@ int ObDataBackupDestConfigParser::update_inner_config_table(common::ObISQLClient
|
||||
// allow set empty data backup dest
|
||||
if (OB_FAIL(backup_dest.assign(config_items_.at(0).value_.ptr()))) {
|
||||
LOG_WARN("fail to assign backup dest", K(ret), K_(tenant_id), K_(config_items));
|
||||
} else if (OB_FAIL(ObIBackupConfigItemParser::set_default_checksum_type(backup_dest))) {
|
||||
LOG_WARN("fail to check dest checksum type", K(ret), K(backup_dest));
|
||||
} else if (OB_FAIL(dest_mgr.init(tenant_id_, dest_type, backup_dest, trans))) {
|
||||
LOG_WARN("fail to init dest manager", K(ret), K_(tenant_id));
|
||||
} else if (OB_FAIL(dest_mgr.write_format_file())) {
|
||||
@ -590,6 +594,8 @@ int ObLogArchiveDestConfigParser::update_archive_dest_config_(common::ObISQLClie
|
||||
} else if (OB_FAIL(ObBackupStorageInfoOperator::get_dest_id(trans, tenant_id_, dest, dest_id))) {
|
||||
LOG_WARN("fail to get dest id", K(ret));
|
||||
} else if (OB_FALSE_IT(archive_dest_.dest_id_ = dest_id)) {
|
||||
} else if (OB_FAIL(ObIBackupConfigItemParser::set_default_checksum_type(archive_dest_.dest_))) {
|
||||
LOG_WARN("fail to set default checksum type", K(ret), "backup_dest", archive_dest_.dest_);
|
||||
} else if (OB_FAIL(archive_dest_.gen_config_items(config_items_))) {
|
||||
LOG_WARN("fail to gen archive config items", K(ret));
|
||||
}
|
||||
@ -651,6 +657,8 @@ int ObLogArchiveDestConfigParser::check_before_update_inner_config(obrpc::ObSrvR
|
||||
ret = OB_NOT_SUPPORTED;
|
||||
LOG_WARN("cannot change archive dest when archive is running.", K(ret), K_(backup_dest));
|
||||
LOG_USER_ERROR(OB_NOT_SUPPORTED, "change archive dest when archive is running is");
|
||||
} else if (OB_FAIL(ObIBackupConfigItemParser::set_default_checksum_type(backup_dest_))) {
|
||||
LOG_WARN("fail to check dest checksum type", K(ret));
|
||||
} else if (OB_FAIL(backup_dest.set(backup_dest_))) {
|
||||
LOG_WARN("fail to set backup dest", K(ret));
|
||||
} else {
|
||||
@ -833,3 +841,53 @@ int ObLogArchiveDestStateConfigParser::check_before_update_inner_config(obrpc::O
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObIBackupConfigItemParser::set_default_checksum_type(share::ObBackupPathString &backup_dest)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
char tmp_str[OB_MAX_BACKUP_DEST_LENGTH] = { 0 };
|
||||
|
||||
if (backup_dest.is_empty() || OB_MAX_BACKUP_DEST_LENGTH < backup_dest.size()) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("backup dest is empty or too long", K(ret), "str_size", backup_dest.size());
|
||||
} else {
|
||||
if ( NULL != strstr(backup_dest.ptr(), CHECKSUM_TYPE)) { // user has specified checksum type
|
||||
} else {
|
||||
ObBackupDest tmp_dest;
|
||||
if (OB_FAIL(tmp_dest.set(backup_dest))) {
|
||||
LOG_WARN("fail to set tmp backup dest", K(ret));
|
||||
} else if (is_object_storage_type(tmp_dest.get_storage_info()->get_type())) {
|
||||
int64_t pos = 0;
|
||||
if (OB_FAIL(databuff_printf(tmp_str, OB_MAX_BACKUP_DEST_LENGTH, pos, "%s%s%s%s",
|
||||
backup_dest.ptr(), "&", CHECKSUM_TYPE, CHECKSUM_TYPE_MD5))) {
|
||||
LOG_WARN("fail to databuff printf", K(ret));
|
||||
} else if (OB_FAIL(backup_dest.assign(tmp_str))) {
|
||||
LOG_WARN("fail to assign backup dest", K(ret));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObIBackupConfigItemParser::set_default_checksum_type(ObBackupDest &backup_dest)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
if (!backup_dest.is_valid()) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("invalid backup dest", K(ret), K(backup_dest));
|
||||
} else {
|
||||
char buf[OB_MAX_BACKUP_DEST_LENGTH] = { 0 };
|
||||
ObBackupPathString backup_dest_str;
|
||||
if (OB_FAIL(backup_dest.get_backup_dest_str(buf, OB_MAX_BACKUP_DEST_LENGTH))) {
|
||||
LOG_WARN("fail to get backup dest str", K(ret), K(backup_dest));
|
||||
} else if (OB_FAIL(backup_dest_str.assign(buf))) {
|
||||
LOG_WARN("fail to assign backup dest str", K(ret), K(backup_dest));
|
||||
} else if (OB_FAIL(set_default_checksum_type(backup_dest_str))) {
|
||||
LOG_WARN("fail to set default checksum type", K(ret), K(backup_dest));
|
||||
} else if (OB_FALSE_IT(backup_dest.reset())) {
|
||||
} else if (OB_FAIL(backup_dest.set(backup_dest_str))) {
|
||||
LOG_WARN("fail to set backup dest", K(ret), K(backup_dest_str));
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
@ -108,6 +108,8 @@ public:
|
||||
const bool for_verify,
|
||||
ObCompatibilityMode &compat_mode) { return OB_NOT_SUPPORTED; }
|
||||
virtual int get_compatibility_mode(common::ObCompatibilityMode &compatibility_mode) { return OB_NOT_SUPPORTED; }
|
||||
int set_default_checksum_type(share::ObBackupPathString &backup_dest);
|
||||
int set_default_checksum_type(ObBackupDest &backup_dest);
|
||||
TO_STRING_KV(K_(tenant_id), K_(type), K_(config_items));
|
||||
protected:
|
||||
uint64_t tenant_id_;
|
||||
|
Loading…
x
Reference in New Issue
Block a user