-
Notifications
You must be signed in to change notification settings - Fork 593
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
cloud_storage_clients
: add cloud_storage_backend::oracle
and fix s3_client::self_configure()
#22902
cloud_storage_clients
: add cloud_storage_backend::oracle
and fix s3_client::self_configure()
#22902
Conversation
ducktape was retried in https://buildkite.com/redpanda/redpanda/builds/53004#019157c3-0cbb-46bd-8bf6-f5a220bed02f ducktape was retried in https://buildkite.com/redpanda/redpanda/builds/53018#01915901-0e01-498d-9160-4f6127dfc5b3 ducktape was retried in https://buildkite.com/redpanda/redpanda/builds/53039#01915b6e-702b-42a5-8af1-219b3091ed4b |
new failures in https://buildkite.com/redpanda/redpanda/builds/53004#019157d3-e46d-4571-b35b-1e11f47f1303:
new failures in https://buildkite.com/redpanda/redpanda/builds/53004#019157d3-e46a-4c57-9d15-4a3f5ee769f8:
|
4434262
to
837b25c
Compare
Force push to
|
In order to provide future support for OCI. Adds a new backend value to the `model::cloud_storage_backend` enum.
In the case of S3-compatible providers, we determine the backend through the access-point/uri if we are already unable to determine the backend from credential sources. Split this logic into its own function. It will see future use in the `s3_client` to assist in self-configuration for required platform specific configs.
Previously, OCI would mistakenly self-configure itself for the `virtual-host` style, due to a check with a `ListObjects` request that succeeds. Oracle states that they only support path-style requests, so this behavior is strange: https://www.oracle.com/ca-en/cloud/storage/object-storage/faq/#category-amazon We now use `infer_backend_from_uri()` to check for the `oracle_s3_compat` backend, and return `s3_url_style::path` if this backend is detected.
`si_settings.bypass_bucket_creation` allows ducktape users to skip the creation of a bucket in cloud storage. However, this value was not considered during the deletion of a bucket in `RedpandaService.clean()`. Change `RedpandaService.clean()` to consider this value, and potentially return early/no-op.
To assert that the `oracle` backend will always configure itself for `path`-style requests.
837b25c
to
b198688
Compare
Force push to:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
neat!
/backport v24.2.x |
Failed to create a backport PR to v24.2.x branch. I tried:
|
unknown = 4, | ||
oracle_s3_compat = 4, | ||
unknown |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
are names or enum numeric values stored in the configuration system? if the later then it seems problematic to assign a different enum to the 4
value.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The enum
type is used to template property<T>
, which also uses the enum
type and not the underlying_type
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what i mean is: if the underlying numeric enum value is stored in the controller log, then it'd be a problem. does the controller log store the stringified name or the underlying numeric vavlue?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I now see the reason for concern though. Persisting this configuration in raft0
as a the raw underlying_type
didn't cross my mind when making this change- I'll keep staring at it and revert the change if it ends up being dangerous.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks for looking!
@@ -327,6 +327,21 @@ operator<<(std::ostream& o, const client_self_configuration_output& r) { | |||
r); | |||
} | |||
|
|||
model::cloud_storage_backend | |||
infer_backend_from_uri(const access_point_uri& uri) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
As a first step in improving compatibility with OCI, help the
s3_client
properly self-configure itself for the newly addedcloud_storage_backend::oracle
value.The
s3_client::self_configure()
function performs a check with aListObjects()
request that currently succeeds for OCI, even in the unsupportedvirtual_host
mode. This would result in improper self-configuration, and every other cloud storage API call made toOCI
in this configuration fails.Correct this behavior by inferring the
oraclecloud
backend through theaccess_point_uri
used, and always self-configure forpath
-style requests when it is in use.Backports Required
Release Notes
Improvements
cloud_storage_backend::oracle
value, and helps thes3_client
properly configure for OCI storage.