8000 fix: fix trace middleware http writer (#401) · optimizely/agent@ddb2e15 · GitHub
[go: up one dir, main page]

Skip to content

Commit ddb2e15

Browse files
committed
fix: fix trace middleware http writer (#401)
* improve trace middleware writer * fix failing acceptance test * fix bug
1 parent 369fe72 commit ddb2e15

File tree

1 file changed

+4
-16
lines changed

1 file changed

+4
-16
lines changed

pkg/middleware/trace.go

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
"net/http"
2626
"sync"
2727

28+
"github.com/go-chi/chi/v5/middleware"
2829
"github.com/optimizely/agent/config"
2930
"github.com/rs/zerolog/log"
3031
"go.opentelemetry.io/otel"
@@ -80,16 +81,6 @@ func (gen *traceIDGenerator) NewIDs(ctx context.Context) (trace.TraceID, trace.S
8081
return tid, sid
8182
}
8283

83-
type statusRecorder struct {
84-
http.ResponseWriter
85-
statusCode int
86-
}
87-
88-
func (r *statusRecorder) WriteHeader(code int) {
89-
r.statusCode = code
90-
r.ResponseWriter.WriteHeader(code)
91-
}
92-
9384
func AddTracing(conf config.TracingConfig, tracerName, spanName string) func(http.Handler) http.Handler {
9485
return func(next http.Handler) http.Handler {
9586
fn := func(w http.ResponseWriter, r *http.Request) {
@@ -107,15 +98,12 @@ func AddTracing(conf config.TracingConfig, tracerName, spanName string) func(htt
10798
attribute.String(OptlySDKHeader, r.Header.Get(OptlySDKHeader)),
10899
)
109100

110-
rec := &statusRecorder{
111-
ResponseWriter: w,
112-
statusCode: http.StatusOK,
113-
}
101+
respWriter := middleware.NewWrapResponseWriter(w, r.ProtoMajor)
114102

115-
next.ServeHTTP(rec, r.WithContext(ctx))
103+
next.ServeHTTP(respWriter, r.WithContext(ctx))
116104

117105
span.SetAttributes(
118-
semconv.HTTPStatusCodeKey.Int(rec.statusCode),
106+
semconv.HTTPStatusCodeKey.Int(respWriter.Status()),
119107
)
120108
}
121109
return http.HandlerFunc(fn)

0 commit comments

Comments
 (0)
0