Skip to content

Commit 885aaa2

Browse files
authored
tracer: Log a warning on NoopTracer.StartSpan() (#2991)
1 parent 8819cd7 commit 885aaa2

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

Diff for: contrib/internal/httptrace/httptrace_test.go

+2
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,8 @@ func BenchmarkStartRequestSpan(b *testing.B) {
360360
b.Errorf("Failed to create request: %v", err)
361361
return
362362
}
363+
// Avoid (NoopTracer) StartSpan warning log
364+
log.UseLogger(log.DiscardLogger{})
363365
opts := []ddtrace.StartSpanOption{
364366
tracer.ServiceName("SomeService"),
365367
tracer.ResourceName("SomeResource"),

Diff for: ddtrace/internal/globaltracer.go

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"sync/atomic"
1010

1111
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace"
12+
"gopkg.in/DataDog/dd-trace-go.v1/internal/log"
1213
)
1314

1415
var (
@@ -46,6 +47,7 @@ type NoopTracer struct{}
4647

4748
// StartSpan implements ddtrace.Tracer.
4849
func (NoopTracer) StartSpan(_ string, _ ...ddtrace.StartSpanOption) ddtrace.Span {
50+
log.Warn("Tracer must be started before starting a span; Review the docs for more information: https://docs.datadoghq.com/tracing/trace_collection/library_config/go/")
4951
return NoopSpan{}
5052
}
5153

Diff for: ddtrace/tracer/tracer_test.go

+28
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@
66
package tracer
77

88
import (
9+
"bytes"
910
"context"
1011
"encoding/base64"
1112
"encoding/binary"
1213
"encoding/hex"
1314
"errors"
1415
"fmt"
1516
"io"
17+
llog "log"
1618
"net/http"
1719
"net/http/httptest"
1820
"os"
@@ -2696,3 +2698,29 @@ func TestExecutionTraceSpanTagged(t *testing.T) {
26962698
assert.Equal(t, partialSpan.Meta["go_execution_traced"], "partial")
26972699
assert.NotContains(t, untracedSpan.Meta, "go_execution_traced")
26982700
}
2701+
2702+
func TestNoopTracerStartSpan(t *testing.T) {
2703+
r, w, err := os.Pipe()
2704+
if err != nil {
2705+
t.Fatalf("Failed to create pipe: %v", err)
2706+
}
2707+
2708+
undo := log.UseLogger(customLogger{l: llog.New(w, "", llog.LstdFlags)})
2709+
defer undo()
2710+
2711+
StartSpan("abcd")
2712+
2713+
w.Close()
2714+
var buf bytes.Buffer
2715+
buf.ReadFrom(r)
2716+
2717+
log := buf.String()
2718+
expected := "Tracer must be started before starting a span"
2719+
assert.Contains(t, log, expected)
2720+
}
2721+
2722+
type customLogger struct{ l *llog.Logger }
2723+
2724+
func (c customLogger) Log(msg string) {
2725+
c.l.Print(msg)
2726+
}

0 commit comments

Comments
 (0)