Skip to content

Commit

Permalink
[Enhancement] Improve files() with wrong credentials error message (S…
Browse files Browse the repository at this point in the history
…tarRocks#51697)

Signed-off-by: wyb <wybb86@gmail.com>
  • Loading branch information
wyb authored Oct 10, 2024
1 parent 219b62c commit 930c97b
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
package com.starrocks.sql.analyzer;

import org.apache.commons.lang.exception.ExceptionUtils;
import software.amazon.awssdk.awscore.exception.AwsErrorDetails;
import software.amazon.awssdk.services.s3.model.S3Exception;

/**
Expand All @@ -37,8 +38,15 @@ public String getMessage() {
Throwable rootCause = getRootCause();
if (rootCause instanceof S3Exception) {
S3Exception s3Exception = (S3Exception) rootCause;
builder.append("Error code: ").append(s3Exception.awsErrorDetails().errorCode()).append(". ");
builder.append("Error message: ").append(s3Exception.awsErrorDetails().errorMessage()).append(". ");
AwsErrorDetails awsErrorDetails = s3Exception.awsErrorDetails();
if (awsErrorDetails.errorCode() != null) {
builder.append("Error code: ").append(awsErrorDetails.errorCode()).append(". ");
}
if (awsErrorDetails.errorMessage() != null) {
builder.append("Error message: ").append(awsErrorDetails.errorMessage());
} else {
builder.append("Error message: ").append(s3Exception.getMessage());
}
} else {
builder.append("Error message: ").append(rootCause.getMessage());
}
Expand Down
8 changes: 8 additions & 0 deletions test/sql/test_files/R/test_error
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,14 @@ select * from files("path" = "hdfs://hdfs://test/x", "format" = "parquet");
-- result:
E: (1064, 'Access storage error. Error message: java.net.UnknownHostException: hdfs')
-- !result
select * from files("path" = "s3://${oss_bucket}/x", "format" = "parquet");
-- result:
E: (1064, 'Access storage error. Error message: Unable to load credentials from system settings. Access key must be specified either via environment variable (AWS_ACCESS_KEY_ID) or system property (aws.accessKeyId).')
-- !result
select * from files("path" = "s3://${oss_bucket}/x", "format" = "parquet", "aws.s3.access_key" = "xxx", "aws.s3.secret_key" = "yyy", "aws.s3.region" = "us-west-2");
-- result:
[REGEX].*Status Code: 403.*
-- !result


shell: ossutil64 mkdir oss://${oss_bucket}/test_files/orc_format/${uuid0} >/dev/null || echo "exit 0" >/dev/null
Expand Down
3 changes: 3 additions & 0 deletions test/sql/test_files/T/test_error
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ use db_${uuid0};
-- path error
select * from files("path" = "xxx", "format" = "parquet");
select * from files("path" = "hdfs://hdfs://test/x", "format" = "parquet");
select * from files("path" = "s3://${oss_bucket}/x", "format" = "parquet");
select * from files("path" = "s3://${oss_bucket}/x", "format" = "parquet", "aws.s3.access_key" = "xxx", "aws.s3.secret_key" = "yyy", "aws.s3.region" = "us-west-2");


-- credential desensitization fail
shell: ossutil64 mkdir oss://${oss_bucket}/test_files/orc_format/${uuid0} >/dev/null || echo "exit 0" >/dev/null
Expand Down

0 comments on commit 930c97b

Please sign in to comment.