internal/worker: refactor Server.handle
Move pre-request code to its own function.
Change-Id: I35177c637871122e80a75a0c8baaec7924d8afb9
Reviewed-on: https://go-review.googlesource.com/c/vulndb/+/386697
Trust: Jonathan Amsterdam <jba@google.com>
Run-TryBot: Jonathan Amsterdam <jba@google.com>
Reviewed-by: Damien Neil <dneil@google.com>
diff --git a/internal/worker/server.go b/internal/worker/server.go
index 78dfa1e..77f8f77 100644
--- a/internal/worker/server.go
+++ b/internal/worker/server.go
@@ -33,7 +33,6 @@
gcppropagator "github.com/GoogleCloudPlatform/opentelemetry-operations-go/propagator"
"go.opentelemetry.io/otel/propagation"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
- otrace "go.opentelemetry.io/otel/trace"
eotel "golang.org/x/exp/event/otel"
)
@@ -114,25 +113,16 @@
func (s *Server) handle(_ context.Context, pattern string, handler func(w http.ResponseWriter, r *http.Request) error) {
http.HandleFunc(pattern, func(w http.ResponseWriter, r *http.Request) {
- log.Debugf(r.Context(), "#### SpanContext: %+v\n", otrace.SpanContextFromContext(r.Context()))
start := time.Now()
+ r = s.beforeRequest(r)
defer s.afterRequest()
- traceID := r.Header.Get("X-Cloud-Trace-Context")
- exporter := event.NewExporter(multiEventHandler{
- log.NewGCPJSONHandler(os.Stderr, traceID),
- s.traceHandler,
- }, nil)
- ctx := event.WithExporter(r.Context(), exporter)
- ctx = s.propagator.Extract(ctx, propagation.HeaderCarrier(r.Header))
- r = r.WithContext(ctx)
-
+ ctx := r.Context()
log.With("httpRequest", r).Infof(ctx, "starting %s", r.URL.Path)
w2 := &responseWriter{ResponseWriter: w}
if err := handler(w2, r); err != nil {
s.serveError(ctx, w2, r, err)
}
-
log.With(
"latency", time.Since(start),
"status", translateStatus(w2.status)).
@@ -140,6 +130,17 @@
})
}
+func (s *Server) beforeRequest(r *http.Request) *http.Request {
+ traceID := r.Header.Get("X-Cloud-Trace-Context")
+ exporter := event.NewExporter(multiEventHandler{
+ log.NewGCPJSONHandler(os.Stderr, traceID),
+ s.traceHandler,
+ }, nil)
+ ctx := event.WithExporter(r.Context(), exporter)
+ ctx = s.propagator.Extract(ctx, propagation.HeaderCarrier(r.Header))
+ return r.WithContext(ctx)
+}
+
type serverError struct {
status int // HTTP status code
err error // wrapped error