Skip to content

Commit c787621

Browse files
committed
Fix data races in ruler
I considered only fudging around with the initialization/startup order in ruler/main.go, but I think initializing the global tracer in `init()` is clearer and less likely to be accidentally broken in the future. Fixes cortexproject#291
1 parent 97d3129 commit c787621

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

server/server.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,15 @@ type Server struct {
5959
GRPC *grpc.Server
6060
}
6161

62+
func init() {
63+
tracer, err := loki.NewTracer()
64+
if err != nil {
65+
panic(fmt.Sprintf("Failed to create tracer: %v", err))
66+
} else {
67+
opentracing.InitGlobalTracer(tracer)
68+
}
69+
}
70+
6271
// New makes a new Server
6372
func New(cfg Config, r *ring.Ring) *Server {
6473
router := mux.NewRouter()
@@ -68,13 +77,7 @@ func New(cfg Config, r *ring.Ring) *Server {
6877
router.Handle("/metrics", prometheus.Handler())
6978
router.PathPrefix("/debug/pprof").Handler(http.DefaultServeMux)
7079

71-
tracer, err := loki.NewTracer()
72-
if err != nil {
73-
log.Errorf("Failed to create tracer: %v", err)
74-
} else {
75-
opentracing.InitGlobalTracer(tracer)
76-
router.Handle("/traces", loki.Handler())
77-
}
80+
router.Handle("/traces", loki.Handler())
7881

7982
grpcServer := grpc.NewServer(
8083
grpc.UnaryInterceptor(grpc_middleware.ChainUnaryServer(

0 commit comments

Comments
 (0)