1
0
mirror of https://github.com/redis/go-redis.git synced 2025-07-28 06:42:00 +03:00

Merge pull request #1567 from go-redis/feature/otel-0.14

Update to otel v0.14
This commit is contained in:
Vladimir Mihailenco
2020-11-21 10:12:54 +02:00
committed by GitHub
13 changed files with 206 additions and 34 deletions

View File

@ -3,8 +3,8 @@ package internal
import (
"context"
"go.opentelemetry.io/otel/api/global"
"go.opentelemetry.io/otel/api/metric"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/metric"
)
var (
@ -21,7 +21,7 @@ func init() {
}
}()
meter := metric.Must(global.Meter("github.com/go-redis/redis"))
meter := metric.Must(otel.Meter("github.com/go-redis/redis"))
WritesCounter = meter.NewInt64Counter("redis.writes",
metric.WithDescription("the number of writes initiated"),

View File

@ -9,7 +9,7 @@ import (
"github.com/go-redis/redis/v8/internal"
"github.com/go-redis/redis/v8/internal/proto"
"go.opentelemetry.io/otel/api/trace"
"go.opentelemetry.io/otel/trace"
)
var noDeadline = time.Time{}
@ -68,10 +68,10 @@ func (cn *Conn) RemoteAddr() net.Addr {
func (cn *Conn) WithReader(ctx context.Context, timeout time.Duration, fn func(rd *proto.Reader) error) error {
return internal.WithSpan(ctx, "redis.with_reader", func(ctx context.Context, span trace.Span) error {
if err := cn.netConn.SetReadDeadline(cn.deadline(ctx, timeout)); err != nil {
return internal.RecordError(ctx, err)
return internal.RecordError(ctx, span, err)
}
if err := fn(cn.rd); err != nil {
return internal.RecordError(ctx, err)
return internal.RecordError(ctx, span, err)
}
return nil
})
@ -82,7 +82,7 @@ func (cn *Conn) WithWriter(
) error {
return internal.WithSpan(ctx, "redis.with_writer", func(ctx context.Context, span trace.Span) error {
if err := cn.netConn.SetWriteDeadline(cn.deadline(ctx, timeout)); err != nil {
return internal.RecordError(ctx, err)
return internal.RecordError(ctx, span, err)
}
if cn.bw.Buffered() > 0 {
@ -90,11 +90,11 @@ func (cn *Conn) WithWriter(
}
if err := fn(cn.wr); err != nil {
return internal.RecordError(ctx, err)
return internal.RecordError(ctx, span, err)
}
if err := cn.bw.Flush(); err != nil {
return internal.RecordError(ctx, err)
return internal.RecordError(ctx, span, err)
}
internal.WritesCounter.Add(ctx, 1)

View File

@ -6,8 +6,8 @@ import (
"github.com/go-redis/redis/v8/internal/proto"
"github.com/go-redis/redis/v8/internal/util"
"go.opentelemetry.io/otel/api/global"
"go.opentelemetry.io/otel/api/trace"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/trace"
)
func Sleep(ctx context.Context, dur time.Duration) error {
@ -52,20 +52,22 @@ func isLower(s string) bool {
//------------------------------------------------------------------------------
var tracer = otel.Tracer("github.com/go-redis/redis")
func WithSpan(ctx context.Context, name string, fn func(context.Context, trace.Span) error) error {
if span := trace.SpanFromContext(ctx); !span.IsRecording() {
return fn(ctx, span)
}
ctx, span := global.Tracer("github.com/go-redis/redis").Start(ctx, name)
ctx, span := tracer.Start(ctx, name)
defer span.End()
return fn(ctx, span)
}
func RecordError(ctx context.Context, err error) error {
func RecordError(ctx context.Context, span trace.Span, err error) error {
if err != proto.Nil {
trace.SpanFromContext(ctx).RecordError(ctx, err)
span.RecordError(err)
}
return err
}