Jelajahi Sumber

Fix handling context cancellation during requests to S3

DarthSim 2 tahun lalu
induk
melakukan
809346d47b
1 mengubah file dengan 7 tambahan dan 0 penghapusan
  1. 7 0
      transport/s3/s3.go

+ 7 - 0
transport/s3/s3.go

@@ -8,6 +8,7 @@ import (
 
 	"github.com/aws/aws-sdk-go/aws"
 	"github.com/aws/aws-sdk-go/aws/awserr"
+	"github.com/aws/aws-sdk-go/aws/request"
 	"github.com/aws/aws-sdk-go/aws/session"
 	"github.com/aws/aws-sdk-go/service/s3"
 
@@ -69,6 +70,12 @@ func (t transport) RoundTrip(req *http.Request) (resp *http.Response, err error)
 			s3req.HTTPResponse.Body.Close()
 		}
 
+		if s3err, ok := err.(awserr.Error); ok && s3err.Code() == request.CanceledErrorCode {
+			if e := s3err.OrigErr(); e != nil {
+				return nil, e
+			}
+		}
+
 		if s3err, ok := err.(awserr.RequestFailure); !ok || s3err.StatusCode() < 100 || s3err.StatusCode() == 301 {
 			return nil, err
 		} else {