Skip to content

Commit 62a58bf

Browse files
committed
[fix](storage vault) Fix missing use_path_style when create storage vault (#45155)
1 parent 9054d1e commit 62a58bf

File tree

2 files changed

+20
-11
lines changed

2 files changed

+20
-11
lines changed

cloud/src/meta-service/meta_service_resource.cpp

+16-11
Original file line numberDiff line numberDiff line change
@@ -765,6 +765,7 @@ struct ObjectStorageDesc {
765765
std::string& endpoint;
766766
std::string& external_endpoint;
767767
std::string& region;
768+
bool& use_path_style;
768769
};
769770

770771
static int extract_object_storage_info(const AlterObjStoreInfoRequest* request,
@@ -777,7 +778,7 @@ static int extract_object_storage_info(const AlterObjStoreInfoRequest* request,
777778
msg = "s3 obj info err " + proto_to_json(*request);
778779
return -1;
779780
}
780-
auto& [ak, sk, bucket, prefix, endpoint, external_endpoint, region] = obj_desc;
781+
auto& [ak, sk, bucket, prefix, endpoint, external_endpoint, region, use_path_style] = obj_desc;
781782
const auto& obj = request->has_obj() ? request->obj() : request->vault().obj_info();
782783
// Prepare data
783784
if (!obj.has_ak() || !obj.has_sk()) {
@@ -803,6 +804,7 @@ static int extract_object_storage_info(const AlterObjStoreInfoRequest* request,
803804
endpoint = obj.has_endpoint() ? obj.endpoint() : "";
804805
external_endpoint = obj.has_external_endpoint() ? obj.external_endpoint() : "";
805806
region = obj.has_region() ? obj.region() : "";
807+
use_path_style = obj.use_path_style();
806808
// obj size > 1k, refuse
807809
if (obj.ByteSizeLong() > 1024) {
808810
code = MetaServiceCode::INVALID_ARGUMENT;
@@ -812,13 +814,13 @@ static int extract_object_storage_info(const AlterObjStoreInfoRequest* request,
812814
return 0;
813815
}
814816

815-
static ObjectStoreInfoPB object_info_pb_factory(ObjectStorageDesc& obj_info,
817+
static ObjectStoreInfoPB object_info_pb_factory(ObjectStorageDesc& obj_desc,
816818
const ObjectStoreInfoPB& obj,
817819
InstanceInfoPB& instance,
818820
EncryptionInfoPB& encryption_info,
819821
AkSkPair& cipher_ak_sk_pair) {
820822
ObjectStoreInfoPB last_item;
821-
auto& [ak, sk, bucket, prefix, endpoint, external_endpoint, region] = obj_info;
823+
auto& [ak, sk, bucket, prefix, endpoint, external_endpoint, region, use_path_style] = obj_desc;
822824
auto now_time = std::chrono::system_clock::now();
823825
uint64_t time =
824826
std::chrono::duration_cast<std::chrono::seconds>(now_time.time_since_epoch()).count();
@@ -840,6 +842,7 @@ static ObjectStoreInfoPB object_info_pb_factory(ObjectStorageDesc& obj_info,
840842
last_item.set_region(region);
841843
last_item.set_provider(obj.provider());
842844
last_item.set_sse_enabled(instance.sse_enabled());
845+
last_item.set_use_path_style(use_path_style);
843846
return last_item;
844847
}
845848

@@ -848,14 +851,15 @@ void MetaServiceImpl::alter_storage_vault(google::protobuf::RpcController* contr
848851
AlterObjStoreInfoResponse* response,
849852
::google::protobuf::Closure* done) {
850853
std::string ak, sk, bucket, prefix, endpoint, external_endpoint, region;
854+
bool use_path_style;
851855
EncryptionInfoPB encryption_info;
852856
AkSkPair cipher_ak_sk_pair;
853857
RPC_PREPROCESS(alter_storage_vault);
854858
switch (request->op()) {
855859
case AlterObjStoreInfoRequest::ADD_S3_VAULT:
856860
case AlterObjStoreInfoRequest::DROP_S3_VAULT: {
857-
auto tmp_desc =
858-
ObjectStorageDesc {ak, sk, bucket, prefix, endpoint, external_endpoint, region};
861+
auto tmp_desc = ObjectStorageDesc {
862+
ak, sk, bucket, prefix, endpoint, external_endpoint, region, use_path_style};
859863
if (0 != extract_object_storage_info(request, code, msg, tmp_desc, encryption_info,
860864
cipher_ak_sk_pair)) {
861865
return;
@@ -994,8 +998,8 @@ void MetaServiceImpl::alter_storage_vault(google::protobuf::RpcController* contr
994998
}
995999
}
9961000
// calc id
997-
auto tmp_tuple =
998-
ObjectStorageDesc {ak, sk, bucket, prefix, endpoint, external_endpoint, region};
1001+
auto tmp_tuple = ObjectStorageDesc {
1002+
ak, sk, bucket, prefix, endpoint, external_endpoint, region, use_path_style};
9991003
ObjectStoreInfoPB last_item = object_info_pb_factory(tmp_tuple, obj, instance,
10001004
encryption_info, cipher_ak_sk_pair);
10011005
if (instance.storage_vault_names().end() !=
@@ -1138,15 +1142,16 @@ void MetaServiceImpl::alter_obj_store_info(google::protobuf::RpcController* cont
11381142
AlterObjStoreInfoResponse* response,
11391143
::google::protobuf::Closure* done) {
11401144
std::string ak, sk, bucket, prefix, endpoint, external_endpoint, region;
1145+
bool use_path_style;
11411146
EncryptionInfoPB encryption_info;
11421147
AkSkPair cipher_ak_sk_pair;
11431148
RPC_PREPROCESS(alter_obj_store_info);
11441149
switch (request->op()) {
11451150
case AlterObjStoreInfoRequest::ADD_OBJ_INFO:
11461151
case AlterObjStoreInfoRequest::LEGACY_UPDATE_AK_SK:
11471152
case AlterObjStoreInfoRequest::UPDATE_AK_SK: {
1148-
auto tmp_desc =
1149-
ObjectStorageDesc {ak, sk, bucket, prefix, endpoint, external_endpoint, region};
1153+
auto tmp_desc = ObjectStorageDesc {
1154+
ak, sk, bucket, prefix, endpoint, external_endpoint, region, use_path_style};
11501155
if (0 != extract_object_storage_info(request, code, msg, tmp_desc, encryption_info,
11511156
cipher_ak_sk_pair)) {
11521157
return;
@@ -1285,8 +1290,8 @@ void MetaServiceImpl::alter_obj_store_info(google::protobuf::RpcController* cont
12851290
}
12861291
}
12871292
// calc id
1288-
auto tmp_tuple =
1289-
ObjectStorageDesc {ak, sk, bucket, prefix, endpoint, external_endpoint, region};
1293+
auto tmp_tuple = ObjectStorageDesc {
1294+
ak, sk, bucket, prefix, endpoint, external_endpoint, region, use_path_style};
12901295
ObjectStoreInfoPB last_item = object_info_pb_factory(tmp_tuple, obj, instance,
12911296
encryption_info, cipher_ak_sk_pair);
12921297
instance.add_obj_info()->CopyFrom(last_item);

fe/fe-core/src/main/java/org/apache/doris/catalog/StorageVault.java

+4
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.apache.doris.common.AnalysisException;
2424
import org.apache.doris.common.DdlException;
2525
import org.apache.doris.common.UserException;
26+
import org.apache.doris.datasource.property.PropertyConverter;
2627
import org.apache.doris.qe.ShowResultSetMetaData;
2728

2829
import com.google.common.base.Strings;
@@ -144,6 +145,9 @@ public void setId(String id) {
144145
vault.modifyProperties(stmt.getProperties());
145146
break;
146147
case S3:
148+
if (!stmt.getProperties().containsKey(PropertyConverter.USE_PATH_STYLE)) {
149+
stmt.getProperties().put(PropertyConverter.USE_PATH_STYLE, "true");
150+
}
147151
CreateResourceStmt resourceStmt =
148152
new CreateResourceStmt(false, ifNotExists, name, stmt.getProperties());
149153
resourceStmt.analyzeResourceType();

0 commit comments

Comments
 (0)