You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We are using a NetApp Grid Storage with the endpoint webscalerdemo.netapp.com, which we passed to the S3ClientBuilder in AWS SDK 1.x (aws-java-sdk-core-1.12.134). In SDK 1.x, the endpoint defaulted to https://, as highlighted in the class documentation.
However, after switching to AWS SDK 2.x (sdk-core-2.25.26), we observed that using the same endpoint in the S3ClientBuilder now requires the scheme (https://) to be explicitly provided. Otherwise, an NPE is thrown with the following message:
The main issue is, even if the scheme is intended to be mandatory, the check implemented in the SDK does not work as expected. When the endpoint is provided without the scheme, a RuntimeException is thrown with the following stack trace:
Caused by: java.lang.RuntimeException: java.net.URISyntaxException: Expected scheme-specific part at index 24: webscalerdemo.netapp.com:
at software.amazon.awssdk.utils.FunctionalUtils.asRuntimeException(FunctionalUtils.java:185)
at software.amazon.awssdk.utils.FunctionalUtils.lambda$safeSupplier$4(FunctionalUtils.java:110)
at software.amazon.awssdk.utils.FunctionalUtils.invokeSafely(FunctionalUtils.java:136)
The root cause appears to be that calling endpointOverride.getScheme() on webscalerdemo.netapp.com incorrectly returns the host (webscalerdemo.netapp.com) instead of the scheme, leading to the above error.
Regression Issue
Select this option if this issue appears to be a regression.
Expected Behavior
Consistent handling of endpoint schemes across both S3ClientBuilder and S3AsyncClientBuilder in SDK 2.x.
Proper validation of the endpoint to avoid unexpected runtime exceptions like java.net.URISyntaxException.
Current Behavior
We are getting URISyntaxException at run time.
Reproduction Steps
Create an S3 Client with SDK 2.x and pass the endpoint URL without a scheme, the expectation would be to get an NPE in the client initialization but you will get a RuntimeException when you run the program and try to connect.
Possible Solution
No response
Additional Information/Context
No response
AWS Java SDK version used
sdk-core-2.25.26
JDK version used
openjdk version "1.8.0_302"
Operating System and version
Rocky Linux 9.5 (Blue Onyx), Kernel: Linux 5.14.0-427.42.1.el9_4.x86_6
The text was updated successfully, but these errors were encountered:
Describe the bug
We are using a NetApp Grid Storage with the endpoint
webscalerdemo.netapp.com
, which we passed to theS3ClientBuilder
in AWS SDK 1.x (aws-java-sdk-core-1.12.134
). In SDK 1.x, the endpoint defaulted tohttps://
, as highlighted in the class documentation.However, after switching to AWS SDK 2.x (
sdk-core-2.25.26
), we observed that using the same endpoint in theS3ClientBuilder
now requires the scheme (https://
) to be explicitly provided. Otherwise, an NPE is thrown with the following message:This behavior is inconsistent with the
S3AsyncClientBuilder
in SDK 2.x, where it is not mandatory to explicitly provide the scheme, as documented here: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/client-configuration.html#client-config-other-diffs. We also use an AsyncClient and did not see any issue without the scheme.The main issue is, even if the scheme is intended to be mandatory, the check implemented in the SDK does not work as expected. When the endpoint is provided without the scheme, a
RuntimeException
is thrown with the following stack trace:The root cause appears to be that calling
endpointOverride.getScheme()
onwebscalerdemo.netapp.com
incorrectly returns the host (webscalerdemo.netapp.com
) instead of the scheme, leading to the above error.Regression Issue
Expected Behavior
S3ClientBuilder
andS3AsyncClientBuilder
in SDK 2.x.java.net.URISyntaxException
.Current Behavior
We are getting URISyntaxException at run time.
Reproduction Steps
Create an S3 Client with SDK 2.x and pass the endpoint URL without a scheme, the expectation would be to get an NPE in the client initialization but you will get a RuntimeException when you run the program and try to connect.
Possible Solution
No response
Additional Information/Context
No response
AWS Java SDK version used
sdk-core-2.25.26
JDK version used
openjdk version "1.8.0_302"
Operating System and version
Rocky Linux 9.5 (Blue Onyx), Kernel: Linux 5.14.0-427.42.1.el9_4.x86_6
The text was updated successfully, but these errors were encountered: