Skip to content

Commit 6e4eb2e

Browse files
authored
Remove OpenTelemetry from the code (but leave redisotel as is) (#1782)
1 parent 036605d commit 6e4eb2e

File tree

6 files changed

+19
-70
lines changed

6 files changed

+19
-70
lines changed

CHANGELOG.md

+13
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,19 @@
33
> :heart:
44
> [**Uptrace.dev** - All-in-one tool to optimize performance and monitor errors & logs](https://uptrace.dev)
55
6+
## v8.10
7+
8+
- Removed extra OpenTelemetry spans from go-redis core. Now go-redis instrumentation only adds a
9+
single span with a Redis command (instead of 4 spans). There are multiple reasons behind this
10+
decision:
11+
12+
- Traces become smaller and less noisy.
13+
- It may be costly to process those 3 extra spans for each query.
14+
- go-redis no longer depends on OpenTelemetry.
15+
16+
Eventually we hope to replace the information that we no longer collect with OpenTelemetry
17+
Metrics.
18+
619
## v8.9
720

821
- Changed `PubSub.Channel` to only rely on `Ping` result. You can now use `WithChannelSize`,

go.mod

-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,5 @@ require (
77
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f
88
github.com/onsi/ginkgo v1.15.0
99
github.com/onsi/gomega v1.10.5
10-
go.opentelemetry.io/otel v0.20.0
1110
go.opentelemetry.io/otel/metric v0.20.0
12-
go.opentelemetry.io/otel/trace v0.20.0
1311
)

internal/pool/conn.go

+5-14
Original file line numberDiff line numberDiff line change
@@ -65,38 +65,29 @@ func (cn *Conn) RemoteAddr() net.Addr {
6565
}
6666

6767
func (cn *Conn) WithReader(ctx context.Context, timeout time.Duration, fn func(rd *proto.Reader) error) error {
68-
ctx, span := internal.StartSpan(ctx, "redis.with_reader")
69-
defer span.End()
70-
7168
if err := cn.netConn.SetReadDeadline(cn.deadline(ctx, timeout)); err != nil {
72-
return internal.RecordError(ctx, span, err)
73-
}
74-
if err := fn(cn.rd); err != nil {
75-
return internal.RecordError(ctx, span, err)
69+
return err
7670
}
77-
return nil
71+
return fn(cn.rd)
7872
}
7973

8074
func (cn *Conn) WithWriter(
8175
ctx context.Context, timeout time.Duration, fn func(wr *proto.Writer) error,
8276
) error {
83-
ctx, span := internal.StartSpan(ctx, "redis.with_writer")
84-
defer span.End()
85-
8677
if err := cn.netConn.SetWriteDeadline(cn.deadline(ctx, timeout)); err != nil {
87-
return internal.RecordError(ctx, span, err)
78+
return err
8879
}
8980

9081
if cn.bw.Buffered() > 0 {
9182
cn.bw.Reset(cn.netConn)
9283
}
9384

9485
if err := fn(cn.wr); err != nil {
95-
return internal.RecordError(ctx, span, err)
86+
return err
9687
}
9788

9889
if err := cn.bw.Flush(); err != nil {
99-
return internal.RecordError(ctx, span, err)
90+
return err
10091
}
10192

10293
internal.WritesCounter.Add(ctx, 1)

internal/util.go

-24
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,10 @@ import (
44
"context"
55
"time"
66

7-
"github.com/go-redis/redis/v8/internal/proto"
87
"github.com/go-redis/redis/v8/internal/util"
9-
"go.opentelemetry.io/otel"
10-
"go.opentelemetry.io/otel/trace"
118
)
129

1310
func Sleep(ctx context.Context, dur time.Duration) error {
14-
_, span := StartSpan(ctx, "time.Sleep")
15-
defer span.End()
16-
1711
t := time.NewTimer(dur)
1812
defer t.Stop()
1913

@@ -50,21 +44,3 @@ func isLower(s string) bool {
5044
}
5145
return true
5246
}
53-
54-
//------------------------------------------------------------------------------
55-
56-
var tracer = otel.Tracer("github.com/go-redis/redis")
57-
58-
func StartSpan(ctx context.Context, name string) (context.Context, trace.Span) {
59-
if span := trace.SpanFromContext(ctx); !span.IsRecording() {
60-
return ctx, span
61-
}
62-
return tracer.Start(ctx, name)
63-
}
64-
65-
func RecordError(ctx context.Context, span trace.Span, err error) error {
66-
if err != proto.Nil {
67-
span.RecordError(err)
68-
}
69-
return err
70-
}

options.go

+1-17
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@ import (
1212
"strings"
1313
"time"
1414

15-
"github.com/go-redis/redis/v8/internal"
1615
"github.com/go-redis/redis/v8/internal/pool"
17-
"go.opentelemetry.io/otel/attribute"
1816
)
1917

2018
// Limiter is the interface of a rate limiter or a circuit breaker.
@@ -291,21 +289,7 @@ func getUserPassword(u *url.URL) (string, string) {
291289
func newConnPool(opt *Options) *pool.ConnPool {
292290
return pool.NewConnPool(&pool.Options{
293291
Dialer: func(ctx context.Context) (net.Conn, error) {
294-
ctx, span := internal.StartSpan(ctx, "redis.dial")
295-
defer span.End()
296-
297-
if span.IsRecording() {
298-
span.SetAttributes(
299-
attribute.String("db.connection_string", opt.Addr),
300-
)
301-
}
302-
303-
cn, err := opt.Dialer(ctx, opt.Network, opt.Addr)
304-
if err != nil {
305-
return nil, internal.RecordError(ctx, span, err)
306-
}
307-
308-
return cn, nil
292+
return opt.Dialer(ctx, opt.Network, opt.Addr)
309293
},
310294
PoolSize: opt.PoolSize,
311295
MinIdleConns: opt.MinIdleConns,

redis.go

-13
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"github.com/go-redis/redis/v8/internal"
1111
"github.com/go-redis/redis/v8/internal/pool"
1212
"github.com/go-redis/redis/v8/internal/proto"
13-
"go.opentelemetry.io/otel/attribute"
1413
)
1514

1615
// Nil reply returned by Redis when key does not exist.
@@ -237,9 +236,6 @@ func (c *baseClient) initConn(ctx context.Context, cn *pool.Conn) error {
237236
return nil
238237
}
239238

240-
ctx, span := internal.StartSpan(ctx, "redis.init_conn")
241-
defer span.End()
242-
243239
connPool := pool.NewSingleConnPool(c.connPool, cn)
244240
conn := newConn(ctx, c.opt, connPool)
245241

@@ -287,20 +283,11 @@ func (c *baseClient) releaseConn(ctx context.Context, cn *pool.Conn, err error)
287283
func (c *baseClient) withConn(
288284
ctx context.Context, fn func(context.Context, *pool.Conn) error,
289285
) error {
290-
ctx, span := internal.StartSpan(ctx, "redis.with_conn")
291-
defer span.End()
292-
293286
cn, err := c.getConn(ctx)
294287
if err != nil {
295288
return err
296289
}
297290

298-
if span.IsRecording() {
299-
if remoteAddr := cn.RemoteAddr(); remoteAddr != nil {
300-
span.SetAttributes(attribute.String("net.peer.ip", remoteAddr.String()))
301-
}
302-
}
303-
304291
defer func() {
305292
c.releaseConn(ctx, cn, err)
306293
}()

0 commit comments

Comments
 (0)