Quellcode durchsuchen

Revised downloading errors reporting

DarthSim vor 1 Jahr
Ursprung
Commit
3fe820625d
2 geänderte Dateien mit 19 neuen und 10 gelöschten Zeilen
  1. 1 0
      CHANGELOG.md
  2. 18 10
      processing_handler.go

+ 1 - 0
CHANGELOG.md

@@ -3,6 +3,7 @@
 ## [Unreleased]
 ### Change
 - Allow relative values for `gravity` and `watermark` offsets.
+- Revised downloading errors reporting.
 
 ## [3.21.0] - 2023-11-23
 ### Add

+ 18 - 10
processing_handler.go

@@ -328,23 +328,31 @@ func handleProcessing(reqID string, rw http.ResponseWriter, r *http.Request) {
 		respondWithNotModified(reqID, r, rw, po, imageURL, nmErr.Headers)
 		return
 	} else {
-		ierr, ierrok := err.(*ierrors.Error)
-		if ierrok {
-			statusCode = ierr.StatusCode
-		}
-		if config.ReportDownloadingErrors && (!ierrok || ierr.Unexpected) {
-			errorreport.Report(err, r)
-		}
+		// This may be a request timeout error or a request cancelled error.
+		// Check it before moving further
+		checkErr(ctx, "timeout", router.CheckTimeout(ctx))
+
+		ierr := ierrors.Wrap(err, 0)
+		ierr.Unexpected = ierr.Unexpected || config.ReportDownloadingErrors
 
-		sendErr(ctx, "download", err)
+		sendErr(ctx, "download", ierr)
 
 		if imagedata.FallbackImage == nil {
-			panic(err)
+			panic(ierr)
 		}
 
-		log.Warningf("Could not load image %s. Using fallback image. %s", imageURL, err.Error())
+		// We didn't panic, so the error is not reported.
+		// Report it now
+		if ierr.Unexpected {
+			errorreport.Report(ierr, r)
+		}
+
+		log.WithField("request_id", reqID).Warningf("Could not load image %s. Using fallback image. %s", imageURL, ierr.Error())
+
 		if config.FallbackImageHTTPCode > 0 {
 			statusCode = config.FallbackImageHTTPCode
+		} else {
+			statusCode = ierr.StatusCode
 		}
 
 		originData = imagedata.FallbackImage