Skip to content

Race with httputil.ReverseProxy #200

@raliste

Description

@raliste

We are using prometheus.InstrumentHandler("test", handler) where handler is an httputil.ReverseProxy.

==================
WARNING: DATA RACE
Read by goroutine 36:
  github.com/prometheus/client_golang/prometheus.computeApproximateRequestSize()
      /Volumes/PreySecure/code/src/github.com/prometheus/client_golang/prometheus/http.go:176 +0x1eb

Previous write by goroutine 42:
  net/textproto.MIMEHeader.Set()
      /usr/local/go/src/net/textproto/header.go:22 +0x94
  net/http.Header.Set()
      /usr/local/go/src/net/http/header.go:31 +0x56
  net/http/httputil.(*ReverseProxy).ServeHTTP()
      /usr/local/go/src/net/http/httputil/reverseproxy.go:207 +0xb19
  net/http.(Handler).ServeHTTP-fm()
      /usr/local/go/src/net/http/h2_bundle.go:3847 +0x5d
  github.com/prometheus/client_golang/prometheus.InstrumentHandlerFuncWithOpts.func1()
      /Volumes/PreySecure/code/src/github.com/prometheus/client_golang/prometheus/http.go:158 +0x3c1
  net/http.HandlerFunc.ServeHTTP()
      /usr/local/go/src/net/http/server.go:1618 +0x47
  main.(*Server).ServeHTTP()
      /Users/raliste/Work/PreySecure/code/src/github.preyhq.com/prey/net/upload/preyfrontend.go:204 +0x47e
  net/http.(*ServeMux).ServeHTTP()
      /usr/local/go/src/net/http/server.go:1910 +0x212
  github.preyhq.com/prey/net/frontend/go/server.(*Server).ServeHTTP()
      /Volumes/PreySecure/code/src/github.preyhq.com/prey/net/frontend/go/server/server.go:36 +0x398
  net/http.serverHandler.ServeHTTP()
      /usr/local/go/src/net/http/server.go:2081 +0x206
  net/http.(*conn).serve()
      /usr/local/go/src/net/http/server.go:1472 +0x1565

Goroutine 36 (running) created at:
  github.com/prometheus/client_golang/prometheus.InstrumentHandlerFuncWithOpts.func1()
      /Volumes/PreySecure/code/src/github.com/prometheus/client_golang/prometheus/http.go:146 +0x1ff
  net/http.HandlerFunc.ServeHTTP()
      /usr/local/go/src/net/http/server.go:1618 +0x47
  main.(*Server).ServeHTTP()
      /Users/raliste/Work/PreySecure/code/src/github.preyhq.com/prey/net/upload/preyfrontend.go:204 +0x47e
  net/http.(*ServeMux).ServeHTTP()
      /usr/local/go/src/net/http/server.go:1910 +0x212
  github.preyhq.com/prey/net/frontend/go/server.(*Server).ServeHTTP()
      /Volumes/PreySecure/code/src/github.preyhq.com/prey/net/frontend/go/server/server.go:36 +0x398
  net/http.serverHandler.ServeHTTP()
      /usr/local/go/src/net/http/server.go:2081 +0x206
  net/http.(*conn).serve()
      /usr/local/go/src/net/http/server.go:1472 +0x1565

Goroutine 42 (running) created at:
  net/http.(*Server).Serve()
      /usr/local/go/src/net/http/server.go:2137 +0x4d1
  net/http.(*Server).ListenAndServe()
      /usr/local/go/src/net/http/server.go:2098 +0x174
  github.preyhq.com/prey/net/frontend/go/server.ListenAndServe()
      /Volumes/PreySecure/code/src/github.preyhq.com/prey/net/frontend/go/server/server.go:50 +0x19f
  main.main()
      /Users/raliste/Work/PreySecure/code/src/github.preyhq.com/prey/net/upload/preyfrontend.go:214 +0xda
==================

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions