aboutsummaryrefslogtreecommitdiff
path: root/weed/s3api/s3_error_utils.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/s3api/s3_error_utils.go')
-rw-r--r--weed/s3api/s3_error_utils.go54
1 files changed, 54 insertions, 0 deletions
diff --git a/weed/s3api/s3_error_utils.go b/weed/s3api/s3_error_utils.go
new file mode 100644
index 000000000..7afb241b5
--- /dev/null
+++ b/weed/s3api/s3_error_utils.go
@@ -0,0 +1,54 @@
+package s3api
+
+import (
+ "github.com/seaweedfs/seaweedfs/weed/glog"
+ "github.com/seaweedfs/seaweedfs/weed/s3api/s3err"
+)
+
+// ErrorHandlers provide common error handling patterns for S3 API operations
+
+// handlePutToFilerError logs an error and returns the standard putToFiler error format
+func handlePutToFilerError(operation string, err error, errorCode s3err.ErrorCode) (string, s3err.ErrorCode, string) {
+ glog.Errorf("Failed to %s: %v", operation, err)
+ return "", errorCode, ""
+}
+
+// handlePutToFilerInternalError is a convenience wrapper for internal errors in putToFiler
+func handlePutToFilerInternalError(operation string, err error) (string, s3err.ErrorCode, string) {
+ return handlePutToFilerError(operation, err, s3err.ErrInternalError)
+}
+
+// handleMultipartError logs an error and returns the standard multipart error format
+func handleMultipartError(operation string, err error, errorCode s3err.ErrorCode) (interface{}, s3err.ErrorCode) {
+ glog.Errorf("Failed to %s: %v", operation, err)
+ return nil, errorCode
+}
+
+// handleMultipartInternalError is a convenience wrapper for internal errors in multipart operations
+func handleMultipartInternalError(operation string, err error) (interface{}, s3err.ErrorCode) {
+ return handleMultipartError(operation, err, s3err.ErrInternalError)
+}
+
+// logErrorAndReturn logs an error with operation context and returns the specified error code
+func logErrorAndReturn(operation string, err error, errorCode s3err.ErrorCode) s3err.ErrorCode {
+ glog.Errorf("Failed to %s: %v", operation, err)
+ return errorCode
+}
+
+// logInternalError is a convenience wrapper for internal error logging
+func logInternalError(operation string, err error) s3err.ErrorCode {
+ return logErrorAndReturn(operation, err, s3err.ErrInternalError)
+}
+
+// SSE-specific error handlers
+
+// handleSSEError handles common SSE-related errors with appropriate context
+func handleSSEError(sseType string, operation string, err error, errorCode s3err.ErrorCode) (string, s3err.ErrorCode, string) {
+ glog.Errorf("Failed to %s for %s: %v", operation, sseType, err)
+ return "", errorCode, ""
+}
+
+// handleSSEInternalError is a convenience wrapper for SSE internal errors
+func handleSSEInternalError(sseType string, operation string, err error) (string, s3err.ErrorCode, string) {
+ return handleSSEError(sseType, operation, err, s3err.ErrInternalError)
+}