This is an automated email from the ASF dual-hosted git repository. gavinchou pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new 31ea6169678 [fix](cloud) Add check for alter storage vault type (#43352) 31ea6169678 is described below commit 31ea616967872d5c02d6abac39912fc0b68112a6 Author: Lei Zhang <27994433+swjtu-zhang...@users.noreply.github.com> AuthorDate: Fri Nov 8 12:14:42 2024 +0800 [fix](cloud) Add check for alter storage vault type (#43352) * Add check to avoid alter hdfs property for s3 storage vault or alter s3 propery for hdfs storage vault --- cloud/src/meta-service/meta_service_resource.cpp | 17 +++++ .../vault_p0/alter/test_alter_vault_type.groovy | 78 ++++++++++++++++++++++ .../vault_p0/create/test_create_vault.groovy | 2 +- 3 files changed, 96 insertions(+), 1 deletion(-) diff --git a/cloud/src/meta-service/meta_service_resource.cpp b/cloud/src/meta-service/meta_service_resource.cpp index 1f999743600..5d4a4d69227 100644 --- a/cloud/src/meta-service/meta_service_resource.cpp +++ b/cloud/src/meta-service/meta_service_resource.cpp @@ -570,6 +570,15 @@ static int alter_hdfs_storage_vault(InstanceInfoPB& instance, std::unique_ptr<Tr } StorageVaultPB new_vault; new_vault.ParseFromString(val); + + if (!new_vault.has_hdfs_info()) { + code = MetaServiceCode::INVALID_ARGUMENT; + std::stringstream ss; + ss << name << " is not hdfs storage vault"; + msg = ss.str(); + return -1; + } + auto origin_vault_info = new_vault.DebugString(); if (vault.has_alter_name()) { if (!is_valid_storage_vault_name(vault.alter_name())) { @@ -671,6 +680,14 @@ static int alter_s3_storage_vault(InstanceInfoPB& instance, std::unique_ptr<Tran } StorageVaultPB new_vault; new_vault.ParseFromString(val); + if (!new_vault.has_obj_info()) { + code = MetaServiceCode::INVALID_ARGUMENT; + std::stringstream ss; + ss << name << " is not s3 storage vault"; + msg = ss.str(); + return -1; + } + if (vault.has_alter_name()) { if (!is_valid_storage_vault_name(vault.alter_name())) { code = MetaServiceCode::INVALID_ARGUMENT; diff --git a/regression-test/suites/vault_p0/alter/test_alter_vault_type.groovy b/regression-test/suites/vault_p0/alter/test_alter_vault_type.groovy new file mode 100644 index 00000000000..1a5181d6dcf --- /dev/null +++ b/regression-test/suites/vault_p0/alter/test_alter_vault_type.groovy @@ -0,0 +1,78 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +suite("test_alter_vault_type", "nonConcurrent") { + def suiteName = name; + if (!isCloudMode()) { + logger.info("skip ${name} case, because not cloud mode") + return + } + + if (!enableStoragevault()) { + logger.info("skip ${name} case, because storage vault not enabled") + return + } + + def hdfsVaultName = suiteName + "_HDFS" + + sql """ + CREATE STORAGE VAULT IF NOT EXISTS ${hdfsVaultName} + PROPERTIES ( + "type"="HDFS", + "fs.defaultFS"="${getHmsHdfsFs()}", + "path_prefix" = "${hdfsVaultName}", + "hadoop.username" = "hadoop" + ); + """ + + expectExceptionLike({ + sql """ + ALTER STORAGE VAULT ${hdfsVaultName} + PROPERTIES ( + "type"="s3", + "s3.access_key" = "new_ak" + ); + """ + }, "is not s3 storage vault") + + + def s3VaultName = suiteName + "_S3" + sql """ + CREATE STORAGE VAULT IF NOT EXISTS ${s3VaultName} + PROPERTIES ( + "type"="S3", + "s3.endpoint"="${getS3Endpoint()}", + "s3.region" = "${getS3Region()}", + "s3.access_key" = "${getS3AK()}", + "s3.secret_key" = "${getS3SK()}", + "s3.root.path" = "${s3VaultName}", + "s3.bucket" = "${getS3BucketName()}", + "s3.external_endpoint" = "", + "provider" = "${getS3Provider()}" + ); + """ + + expectExceptionLike({ + sql """ + ALTER STORAGE VAULT ${s3VaultName} + PROPERTIES ( + "type"="hdfs", + "hadoop.username" = "hdfs" + ); + """ + }, "is not hdfs storage vault") +} \ No newline at end of file diff --git a/regression-test/suites/vault_p0/create/test_create_vault.groovy b/regression-test/suites/vault_p0/create/test_create_vault.groovy index bf6ddc756df..13c9f8d8283 100644 --- a/regression-test/suites/vault_p0/create/test_create_vault.groovy +++ b/regression-test/suites/vault_p0/create/test_create_vault.groovy @@ -171,7 +171,7 @@ suite("test_create_vault", "nonConcurrent") { expectExceptionLike({ sql """ - CREATE STORAGE VAULT IF NOT EXISTS built_in_storage_vault + CREATE STORAGE VAULT built_in_storage_vault PROPERTIES ( "type"="S3", "s3.endpoint"="${getS3Endpoint()}", --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org