fix object storage checksum
This commit is contained in:
@ -551,6 +551,11 @@ int ObStorageCosBase::open(
|
|||||||
} else if (OB_FAIL(handle_.build_bucket_and_object_name(uri))) {
|
} else if (OB_FAIL(handle_.build_bucket_and_object_name(uri))) {
|
||||||
OB_LOG(WARN, "failed to build bucket and object name", K(ret), K(uri));
|
OB_LOG(WARN, "failed to build bucket and object name", K(ret), K(uri));
|
||||||
}
|
}
|
||||||
|
#ifdef ERRSIM
|
||||||
|
if (OB_NOT_NULL(storage_info) && (OB_SUCCESS != EventTable::EN_ENABLE_LOG_OBJECT_STORAGE_CHECKSUM_TYPE)) {
|
||||||
|
OB_LOG(ERROR, "errsim backup io with checksum type", "checksum_type", storage_info->get_checksum_type_str());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -221,6 +221,8 @@ int ObObjectStorageInfo::parse_storage_info_(const char *storage_info, bool &has
|
|||||||
const char *checksum_type_str = token + strlen(CHECKSUM_TYPE);
|
const char *checksum_type_str = token + strlen(CHECKSUM_TYPE);
|
||||||
if (OB_FAIL(set_checksum_type_(checksum_type_str))) {
|
if (OB_FAIL(set_checksum_type_(checksum_type_str))) {
|
||||||
OB_LOG(WARN, "fail to set checksum type", K(ret), K(checksum_type_str));
|
OB_LOG(WARN, "fail to set checksum type", K(ret), K(checksum_type_str));
|
||||||
|
} else if (OB_FAIL(set_storage_info_field_(token, extension_, sizeof(extension_)))) {
|
||||||
|
LOG_WARN("fail to set checksum type into extension", K(ret), K(token));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
}
|
}
|
||||||
@ -346,9 +348,7 @@ int ObObjectStorageInfo::get_storage_info_str(char *storage_info, const int64_t
|
|||||||
} else if (OB_STORAGE_FILE != device_type_) {
|
} else if (OB_STORAGE_FILE != device_type_) {
|
||||||
if (OB_FAIL(get_access_key_(key, sizeof(key)))) {
|
if (OB_FAIL(get_access_key_(key, sizeof(key)))) {
|
||||||
LOG_WARN("failed to get access key", K(ret));
|
LOG_WARN("failed to get access key", K(ret));
|
||||||
} else if (OB_FAIL(databuff_printf(storage_info, info_len, "%s&%s&%s&%s%s",
|
} else if (OB_FAIL(databuff_printf(storage_info, info_len, "%s&%s&%s", endpoint_, access_id_, key))) {
|
||||||
endpoint_, access_id_, key,
|
|
||||||
CHECKSUM_TYPE, get_checksum_type_str()))) {
|
|
||||||
LOG_WARN("failed to set storage info", K(ret), K(info_len));
|
LOG_WARN("failed to set storage info", K(ret), K(info_len));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -452,6 +452,11 @@ int ObStorageOssBase::init_with_storage_info(common::ObObjectStorageInfo *storag
|
|||||||
OB_LOG(WARN, "aos pool or oss option is NULL", K(aos_pool_), K(oss_option_));
|
OB_LOG(WARN, "aos pool or oss option is NULL", K(aos_pool_), K(oss_option_));
|
||||||
} else {
|
} else {
|
||||||
checksum_type_ = storage_info->get_checksum_type();
|
checksum_type_ = storage_info->get_checksum_type();
|
||||||
|
#ifdef ERRSIM
|
||||||
|
if (OB_NOT_NULL(storage_info) && (OB_SUCCESS != EventTable::EN_ENABLE_LOG_OBJECT_STORAGE_CHECKSUM_TYPE)) {
|
||||||
|
OB_LOG(ERROR, "errsim backup io with checksum type", "checksum_type", storage_info->get_checksum_type_str());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
if (OB_UNLIKELY(!is_oss_supported_checksum(checksum_type_))) {
|
if (OB_UNLIKELY(!is_oss_supported_checksum(checksum_type_))) {
|
||||||
ret = OB_CHECKSUM_TYPE_NOT_SUPPORTED;
|
ret = OB_CHECKSUM_TYPE_NOT_SUPPORTED;
|
||||||
OB_LOG(WARN, "that checksum algorithm is not supported for oss", K(ret), K_(checksum_type));
|
OB_LOG(WARN, "that checksum algorithm is not supported for oss", K(ret), K_(checksum_type));
|
||||||
|
|||||||
@ -992,6 +992,11 @@ int ObStorageS3Base::open(const ObString &uri, ObObjectStorageInfo *storage_info
|
|||||||
OB_LOG(WARN, "faied to get s3 client", K(ret));
|
OB_LOG(WARN, "faied to get s3 client", K(ret));
|
||||||
} else {
|
} else {
|
||||||
checksum_type_ = storage_info->get_checksum_type();
|
checksum_type_ = storage_info->get_checksum_type();
|
||||||
|
#ifdef ERRSIM
|
||||||
|
if (OB_NOT_NULL(storage_info) && (OB_SUCCESS != EventTable::EN_ENABLE_LOG_OBJECT_STORAGE_CHECKSUM_TYPE)) {
|
||||||
|
OB_LOG(ERROR, "errsim backup io with checksum type", "checksum_type", storage_info->get_checksum_type_str());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
if (OB_UNLIKELY(!is_s3_supported_checksum(checksum_type_))) {
|
if (OB_UNLIKELY(!is_s3_supported_checksum(checksum_type_))) {
|
||||||
ret = OB_CHECKSUM_TYPE_NOT_SUPPORTED;
|
ret = OB_CHECKSUM_TYPE_NOT_SUPPORTED;
|
||||||
OB_LOG(WARN, "that checksum algorithm is not supported for s3", K(ret), K_(checksum_type));
|
OB_LOG(WARN, "that checksum algorithm is not supported for s3", K(ret), K_(checksum_type));
|
||||||
|
|||||||
@ -495,6 +495,7 @@ GLOBAL_ERRSIM_POINT_DEF(1113, EN_RESTORE_TABLET_TASK_FAILED, "");
|
|||||||
GLOBAL_ERRSIM_POINT_DEF(1114, EN_INSERT_USER_RECOVER_JOB_FAILED, "");
|
GLOBAL_ERRSIM_POINT_DEF(1114, EN_INSERT_USER_RECOVER_JOB_FAILED, "");
|
||||||
GLOBAL_ERRSIM_POINT_DEF(1115, EN_INSERT_AUX_TENANT_RESTORE_JOB_FAILED, "");
|
GLOBAL_ERRSIM_POINT_DEF(1115, EN_INSERT_AUX_TENANT_RESTORE_JOB_FAILED, "");
|
||||||
GLOBAL_ERRSIM_POINT_DEF(1116, EN_RESTORE_CREATE_LS_FAILED, "");
|
GLOBAL_ERRSIM_POINT_DEF(1116, EN_RESTORE_CREATE_LS_FAILED, "");
|
||||||
|
GLOBAL_ERRSIM_POINT_DEF(1117, EN_ENABLE_LOG_OBJECT_STORAGE_CHECKSUM_TYPE, "");
|
||||||
// END OF STORAGE HA - 1101 - 2000
|
// END OF STORAGE HA - 1101 - 2000
|
||||||
|
|
||||||
// sql parameterization 1170-1180
|
// sql parameterization 1170-1180
|
||||||
|
|||||||
@ -111,7 +111,7 @@ TEST(ObObjectStorageInfo, cos)
|
|||||||
storage_info = "host=xxx.com&access_id=111&access_key=222";
|
storage_info = "host=xxx.com&access_id=111&access_key=222";
|
||||||
ASSERT_EQ(OB_INVALID_BACKUP_DEST, info1.set(uri, storage_info));
|
ASSERT_EQ(OB_INVALID_BACKUP_DEST, info1.set(uri, storage_info));
|
||||||
|
|
||||||
storage_info = "host=xxx.com&access_id=111&access_key=222&checksum_type=md5&appid=333";
|
storage_info = "host=xxx.com&access_id=111&access_key=222&appid=333&checksum_type=md5";
|
||||||
ASSERT_EQ(OB_SUCCESS, info1.set(uri, storage_info));
|
ASSERT_EQ(OB_SUCCESS, info1.set(uri, storage_info));
|
||||||
|
|
||||||
char buf[OB_MAX_BACKUP_STORAGE_INFO_LENGTH] = { 0 };
|
char buf[OB_MAX_BACKUP_STORAGE_INFO_LENGTH] = { 0 };
|
||||||
@ -153,15 +153,15 @@ TEST(ObObjectStorageInfo, s3)
|
|||||||
ASSERT_EQ(OB_SUCCESS, info1.set(uri, storage_info));
|
ASSERT_EQ(OB_SUCCESS, info1.set(uri, storage_info));
|
||||||
info1.reset();
|
info1.reset();
|
||||||
|
|
||||||
storage_info = "host=xxx.com&access_id=111&access_key=222&checksum_type=md5&s3_region=333";
|
storage_info = "host=xxx.com&access_id=111&access_key=222&s3_region=333&checksum_type=md5";
|
||||||
ASSERT_EQ(OB_SUCCESS, info1.set(uri, storage_info));
|
ASSERT_EQ(OB_SUCCESS, info1.set(uri, storage_info));
|
||||||
ASSERT_EQ(0, ::strcmp("s3_region=333", info1.extension_));
|
ASSERT_EQ(0, ::strcmp("s3_region=333&checksum_type=md5", info1.extension_));
|
||||||
|
|
||||||
char buf[OB_MAX_BACKUP_STORAGE_INFO_LENGTH] = { 0 };
|
char buf[OB_MAX_BACKUP_STORAGE_INFO_LENGTH] = { 0 };
|
||||||
ASSERT_EQ(OB_SUCCESS, info1.get_storage_info_str(buf, sizeof(buf)));
|
ASSERT_EQ(OB_SUCCESS, info1.get_storage_info_str(buf, sizeof(buf)));
|
||||||
ASSERT_STREQ(storage_info, buf);
|
ASSERT_STREQ(storage_info, buf);
|
||||||
|
|
||||||
storage_info = "host=xxx.com&access_id=111&access_key=222&checksum_type=md5&s3_region=333&delete_mode=delete";
|
storage_info = "host=xxx.com&access_id=111&access_key=222&s3_region=333&delete_mode=delete&checksum_type=md5";
|
||||||
info1.reset();
|
info1.reset();
|
||||||
ASSERT_EQ(OB_SUCCESS, info1.set(uri, storage_info));
|
ASSERT_EQ(OB_SUCCESS, info1.set(uri, storage_info));
|
||||||
ASSERT_EQ(OB_SUCCESS, info1.get_storage_info_str(buf, sizeof(buf)));
|
ASSERT_EQ(OB_SUCCESS, info1.get_storage_info_str(buf, sizeof(buf)));
|
||||||
|
|||||||
@ -98,7 +98,7 @@ TEST(ObBackupDest, oss)
|
|||||||
EXPECT_EQ(OB_SUCCESS, ObMasterKeyGetter::instance().set_root_key(OB_SYS_TENANT_ID,
|
EXPECT_EQ(OB_SUCCESS, ObMasterKeyGetter::instance().set_root_key(OB_SYS_TENANT_ID,
|
||||||
obrpc::RootKeyType::DEFAULT, ObString()));
|
obrpc::RootKeyType::DEFAULT, ObString()));
|
||||||
ASSERT_EQ(OB_SUCCESS, dest.get_backup_dest_str(backup_dest_str, sizeof(backup_dest_str)));
|
ASSERT_EQ(OB_SUCCESS, dest.get_backup_dest_str(backup_dest_str, sizeof(backup_dest_str)));
|
||||||
ASSERT_EQ(0, strcmp(backup_dest_str, "oss://backup_dir?host=xxx.com&access_id=111&encrypt_key=9B6FDE7E1E54CD292CDE5494CEB86B6F&checksum_type=md5&delete_mode=tagging"));
|
ASSERT_EQ(0, strcmp(backup_dest_str, "oss://backup_dir?host=xxx.com&access_id=111&encrypt_key=9B6FDE7E1E54CD292CDE5494CEB86B6F&delete_mode=tagging"));
|
||||||
ASSERT_EQ(OB_SUCCESS, dest.get_backup_path_str(backup_path_str, sizeof(backup_path_str)));
|
ASSERT_EQ(OB_SUCCESS, dest.get_backup_path_str(backup_path_str, sizeof(backup_path_str)));
|
||||||
ASSERT_EQ(0, strcmp(backup_path_str, "oss://backup_dir?host=xxx.com"));
|
ASSERT_EQ(0, strcmp(backup_path_str, "oss://backup_dir?host=xxx.com"));
|
||||||
ASSERT_TRUE(dest.is_root_path_equal(dest1));
|
ASSERT_TRUE(dest.is_root_path_equal(dest1));
|
||||||
@ -139,7 +139,7 @@ TEST(ObBackupDest, oss_encrypt)
|
|||||||
char backup_dest_str[OB_MAX_BACKUP_DEST_LENGTH] = { 0 };
|
char backup_dest_str[OB_MAX_BACKUP_DEST_LENGTH] = { 0 };
|
||||||
char backup_path_str[OB_MAX_BACKUP_DEST_LENGTH] = { 0 };
|
char backup_path_str[OB_MAX_BACKUP_DEST_LENGTH] = { 0 };
|
||||||
ASSERT_EQ(OB_SUCCESS, dest.get_backup_dest_str(backup_dest_str, sizeof(backup_dest_str)));
|
ASSERT_EQ(OB_SUCCESS, dest.get_backup_dest_str(backup_dest_str, sizeof(backup_dest_str)));
|
||||||
ASSERT_EQ(0, strcmp(backup_dest_str, "oss://backup_dir?host=xxx.com&access_id=111&encrypt_key=9B6FDE7E1E54CD292CDE5494CEB86B6F&checksum_type=md5"));
|
ASSERT_EQ(0, strcmp(backup_dest_str, "oss://backup_dir?host=xxx.com&access_id=111&encrypt_key=9B6FDE7E1E54CD292CDE5494CEB86B6F"));
|
||||||
ASSERT_EQ(OB_SUCCESS, dest.get_backup_path_str(backup_path_str, sizeof(backup_path_str)));
|
ASSERT_EQ(OB_SUCCESS, dest.get_backup_path_str(backup_path_str, sizeof(backup_path_str)));
|
||||||
ASSERT_EQ(0, strcmp(backup_path_str, "oss://backup_dir?host=xxx.com"));
|
ASSERT_EQ(0, strcmp(backup_path_str, "oss://backup_dir?host=xxx.com"));
|
||||||
|
|
||||||
@ -168,7 +168,7 @@ TEST(ObBackupDest, cos)
|
|||||||
EXPECT_EQ(OB_SUCCESS, ObMasterKeyGetter::instance().set_root_key(OB_SYS_TENANT_ID,
|
EXPECT_EQ(OB_SUCCESS, ObMasterKeyGetter::instance().set_root_key(OB_SYS_TENANT_ID,
|
||||||
obrpc::RootKeyType::DEFAULT, ObString()));
|
obrpc::RootKeyType::DEFAULT, ObString()));
|
||||||
ASSERT_EQ(OB_SUCCESS, dest.get_backup_dest_str(backup_dest_str, sizeof(backup_dest_str)));
|
ASSERT_EQ(OB_SUCCESS, dest.get_backup_dest_str(backup_dest_str, sizeof(backup_dest_str)));
|
||||||
ASSERT_EQ(0, strcmp(backup_dest_str, "cos://backup_dir?host=xxx.com&access_id=111&encrypt_key=9B6FDE7E1E54CD292CDE5494CEB86B6F&checksum_type=md5&delete_mode=tagging&appid=333"));
|
ASSERT_EQ(0, strcmp(backup_dest_str, "cos://backup_dir?host=xxx.com&access_id=111&encrypt_key=9B6FDE7E1E54CD292CDE5494CEB86B6F&delete_mode=tagging&appid=333"));
|
||||||
ASSERT_EQ(OB_SUCCESS, dest.get_backup_path_str(backup_path_str, sizeof(backup_path_str)));
|
ASSERT_EQ(OB_SUCCESS, dest.get_backup_path_str(backup_path_str, sizeof(backup_path_str)));
|
||||||
ASSERT_EQ(0, strcmp(backup_path_str, "cos://backup_dir?host=xxx.com"));
|
ASSERT_EQ(0, strcmp(backup_path_str, "cos://backup_dir?host=xxx.com"));
|
||||||
ASSERT_TRUE(dest.is_root_path_equal(dest1));
|
ASSERT_TRUE(dest.is_root_path_equal(dest1));
|
||||||
@ -209,7 +209,7 @@ TEST(ObBackupDest, cos_encrypt)
|
|||||||
char backup_dest_str[OB_MAX_BACKUP_DEST_LENGTH] = { 0 };
|
char backup_dest_str[OB_MAX_BACKUP_DEST_LENGTH] = { 0 };
|
||||||
char backup_path_str[OB_MAX_BACKUP_DEST_LENGTH] = { 0 };
|
char backup_path_str[OB_MAX_BACKUP_DEST_LENGTH] = { 0 };
|
||||||
ASSERT_EQ(OB_SUCCESS, dest.get_backup_dest_str(backup_dest_str, sizeof(backup_dest_str)));
|
ASSERT_EQ(OB_SUCCESS, dest.get_backup_dest_str(backup_dest_str, sizeof(backup_dest_str)));
|
||||||
ASSERT_EQ(0, strcmp(backup_dest_str, "cos://backup_dir?host=xxx.com&access_id=111&encrypt_key=9B6FDE7E1E54CD292CDE5494CEB86B6F&checksum_type=md5&appid=333"));
|
ASSERT_EQ(0, strcmp(backup_dest_str, "cos://backup_dir?host=xxx.com&access_id=111&encrypt_key=9B6FDE7E1E54CD292CDE5494CEB86B6F&appid=333"));
|
||||||
ASSERT_EQ(OB_SUCCESS, dest.get_backup_path_str(backup_path_str, sizeof(backup_path_str)));
|
ASSERT_EQ(OB_SUCCESS, dest.get_backup_path_str(backup_path_str, sizeof(backup_path_str)));
|
||||||
ASSERT_EQ(0, strcmp(backup_path_str, "cos://backup_dir?host=xxx.com"));
|
ASSERT_EQ(0, strcmp(backup_path_str, "cos://backup_dir?host=xxx.com"));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user