mirror of
https://github.com/minio/minio.git
synced 2025-11-09 21:49:46 -05:00
Use one http response recorder per external http call (#16938)
This commit is contained in:
@@ -1004,7 +1004,7 @@ func replicateObject(ctx context.Context, ri ReplicateObjectInfo, objectAPI Obje
|
||||
},
|
||||
}
|
||||
|
||||
_, _ = objectAPI.PutObjectMetadata(ctx, bucket, object, popts);
|
||||
_, _ = objectAPI.PutObjectMetadata(ctx, bucket, object, popts)
|
||||
opType := replication.MetadataReplicationType
|
||||
if rinfos.Action() == replicateAll {
|
||||
opType = replication.ObjectReplicationType
|
||||
|
||||
@@ -555,7 +555,7 @@ func addCustomHeaders(h http.Handler) http.Handler {
|
||||
if globalLocalNodeName != "" {
|
||||
w.Header().Set(xhttp.AmzRequestHostID, globalLocalNodeNameHex)
|
||||
}
|
||||
h.ServeHTTP(xhttp.NewResponseRecorder(w), r)
|
||||
h.ServeHTTP(w, r)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -355,11 +355,11 @@ func collectAPIStats(api string, f http.HandlerFunc) http.HandlerFunc {
|
||||
globalHTTPStats.currentS3Requests.Inc(api)
|
||||
defer globalHTTPStats.currentS3Requests.Dec(api)
|
||||
|
||||
statsWriter := xhttp.NewResponseRecorder(w)
|
||||
f.ServeHTTP(w, r)
|
||||
|
||||
f.ServeHTTP(statsWriter, r)
|
||||
|
||||
globalHTTPStats.updateStats(api, r, statsWriter)
|
||||
if sw, ok := w.(*xhttp.ResponseRecorder); ok {
|
||||
globalHTTPStats.updateStats(api, r, sw)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -67,8 +67,12 @@ func getOpName(name string) (op string) {
|
||||
// otherwise, generate a trace event with request information but no response.
|
||||
func httpTracer(h http.Handler) http.Handler {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
// Setup a http request response recorder - this is needed for
|
||||
// http stats requests and audit if enabled.
|
||||
respRecorder := xhttp.NewResponseRecorder(w)
|
||||
|
||||
if globalTrace.NumSubscribers(madmin.TraceS3|madmin.TraceInternal) == 0 {
|
||||
h.ServeHTTP(w, r)
|
||||
h.ServeHTTP(respRecorder, r)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -80,9 +84,8 @@ func httpTracer(h http.Handler) http.Handler {
|
||||
ctx := context.WithValue(r.Context(), mcontext.ContextTraceKey, &tc)
|
||||
r = r.WithContext(ctx)
|
||||
|
||||
// Setup a http request and response body recorder
|
||||
// Setup a http request body recorder
|
||||
reqRecorder := &xhttp.RequestRecorder{Reader: r.Body}
|
||||
respRecorder := xhttp.NewResponseRecorder(w)
|
||||
|
||||
tc.RequestRecorder = reqRecorder
|
||||
tc.ResponseRecorder = respRecorder
|
||||
|
||||
Reference in New Issue
Block a user