You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							54 lines
						
					
					
						
							2.3 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							54 lines
						
					
					
						
							2.3 KiB
						
					
					
				| 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) | |
| }
 |