Sfoglia il codice sorgente

Merge pull request #1261 from porter-dev/belanger/por-75-broken-pipe

[POR-75] Case on broken pipe error when sending writing results from backend
abelanger5 4 anni fa
parent
commit
89b72fffc1
1 ha cambiato i file con 7 aggiunte e 1 eliminazioni
  1. 7 1
      api/server/shared/writer.go

+ 7 - 1
api/server/shared/writer.go

@@ -2,7 +2,9 @@ package shared
 
 import (
 	"encoding/json"
+	"errors"
 	"net/http"
+	"syscall"
 
 	"github.com/porter-dev/porter/api/server/shared/apierrors"
 	"github.com/porter-dev/porter/api/server/shared/config"
@@ -25,7 +27,11 @@ func NewDefaultResultWriter(conf *config.Config) ResultWriter {
 func (j *DefaultResultWriter) WriteResult(w http.ResponseWriter, r *http.Request, v interface{}) {
 	err := json.NewEncoder(w).Encode(v)
 
-	if err != nil {
+	if errors.Is(err, syscall.EPIPE) {
+		// broken pipe error, ignore. This means the client closed the connection while
+		// the server was sending bytes.
+		return
+	} else if err != nil {
 		apierrors.HandleAPIError(j.config, w, r, apierrors.NewErrInternal(err))
 	}
 }