tracker/udp/server/server.go | 10 +++++++++- diff --git a/tracker/udp/server/server.go b/tracker/udp/server/server.go index 6f0fb438e28a2e85e939d786edf224fffebcd776..5666e8052be0e0d8b37962dafd094205211fdd20 100644 --- a/tracker/udp/server/server.go +++ b/tracker/udp/server/server.go @@ -210,19 +210,27 @@ // Limit concurrent handled requests. sem := make(chan struct{}, 1000) for { n, addr, err := pc.ReadFrom(b[:]) + ctx, span := tracer.Start(ctx, "handle udp packet") if err != nil { + span.SetStatus(codes.Error, err.Error()) + span.End() return err } select { case <-ctx.Done(): + span.SetStatus(codes.Error, err.Error()) + span.End() return ctx.Err() default: - log.Printf("dropping request from %v: concurrency limit reached", addr) + span.SetStatus(codes.Error, "concurrency limit reached") + span.End() + log.Levelf(log.Debug, "dropping request from %v: concurrency limit reached", addr) continue case sem <- struct{}{}: } b := append([]byte(nil), b[:n]...) go func() { + defer span.End() defer func() { <-sem }() err := s.HandleRequest(ctx, family, addr, b) if err != nil {