1
0
mirror of https://github.com/redis/go-redis.git synced 2025-07-29 17:41:15 +03:00

Merge branch 'v8'

This commit is contained in:
Vladimir Mihailenco
2020-05-21 10:16:44 +03:00
47 changed files with 3373 additions and 3122 deletions

View File

@ -6,7 +6,7 @@ import (
"testing"
"time"
"github.com/go-redis/redis/v7/internal/pool"
"github.com/go-redis/redis/v8/internal/pool"
)
type poolGetPutBenchmark struct {

View File

@ -6,7 +6,8 @@ import (
"sync/atomic"
"time"
"github.com/go-redis/redis/v7/internal/proto"
"github.com/go-redis/redis/v8/internal"
"github.com/go-redis/redis/v8/internal/proto"
)
var noDeadline = time.Time{}
@ -58,31 +59,35 @@ func (cn *Conn) RemoteAddr() net.Addr {
}
func (cn *Conn) WithReader(ctx context.Context, timeout time.Duration, fn func(rd *proto.Reader) error) error {
err := cn.netConn.SetReadDeadline(cn.deadline(ctx, timeout))
if err != nil {
return err
}
return fn(cn.rd)
return internal.WithSpan(ctx, "with_reader", func(ctx context.Context) error {
err := cn.netConn.SetReadDeadline(cn.deadline(ctx, timeout))
if err != nil {
return err
}
return fn(cn.rd)
})
}
func (cn *Conn) WithWriter(
ctx context.Context, timeout time.Duration, fn func(wr *proto.Writer) error,
) error {
err := cn.netConn.SetWriteDeadline(cn.deadline(ctx, timeout))
if err != nil {
return err
}
return internal.WithSpan(ctx, "with_writer", func(ctx context.Context) error {
err := cn.netConn.SetWriteDeadline(cn.deadline(ctx, timeout))
if err != nil {
return err
}
if cn.wr.Buffered() > 0 {
cn.wr.Reset(cn.netConn)
}
if cn.wr.Buffered() > 0 {
cn.wr.Reset(cn.netConn)
}
err = fn(cn.wr)
if err != nil {
return err
}
err = fn(cn.wr)
if err != nil {
return err
}
return cn.wr.Flush()
return cn.wr.Flush()
})
}
func (cn *Conn) Close() error {

View File

@ -8,7 +8,7 @@ import (
"sync/atomic"
"time"
"github.com/go-redis/redis/v7/internal"
"github.com/go-redis/redis/v8/internal"
)
var ErrClosed = errors.New("redis: client is closed")

View File

@ -6,7 +6,7 @@ import (
"testing"
"time"
"github.com/go-redis/redis/v7/internal/pool"
"github.com/go-redis/redis/v8/internal/pool"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"

View File

@ -5,7 +5,7 @@ import (
"fmt"
"io"
"github.com/go-redis/redis/v7/internal/util"
"github.com/go-redis/redis/v8/internal/util"
)
const (

View File

@ -4,7 +4,7 @@ import (
"bytes"
"testing"
"github.com/go-redis/redis/v7/internal/proto"
"github.com/go-redis/redis/v8/internal/proto"
)
func BenchmarkReader_ParseReply_Status(b *testing.B) {

View File

@ -5,7 +5,7 @@ import (
"fmt"
"reflect"
"github.com/go-redis/redis/v7/internal/util"
"github.com/go-redis/redis/v8/internal/util"
)
func Scan(b []byte, v interface{}) error {

View File

@ -7,7 +7,7 @@ import (
"testing"
"time"
"github.com/go-redis/redis/v7/internal/proto"
"github.com/go-redis/redis/v8/internal/proto"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"

View File

@ -8,7 +8,7 @@ import (
"strconv"
"time"
"github.com/go-redis/redis/v7/internal/util"
"github.com/go-redis/redis/v8/internal/util"
)
type Writer struct {
@ -93,7 +93,8 @@ func (w *Writer) writeArg(v interface{}) error {
}
return w.int(0)
case time.Time:
return w.string(v.Format(time.RFC3339Nano))
w.numBuf = v.AppendFormat(w.numBuf[:0], time.RFC3339Nano)
return w.bytes(w.numBuf)
case encoding.BinaryMarshaler:
b, err := v.MarshalBinary()
if err != nil {

View File

@ -4,19 +4,23 @@ import (
"context"
"time"
"github.com/go-redis/redis/v7/internal/util"
"github.com/go-redis/redis/v8/internal/util"
"go.opentelemetry.io/otel/api/global"
"go.opentelemetry.io/otel/api/trace"
)
func Sleep(ctx context.Context, dur time.Duration) error {
t := time.NewTimer(dur)
defer t.Stop()
return WithSpan(ctx, "sleep", func(ctx context.Context) error {
t := time.NewTimer(dur)
defer t.Stop()
select {
case <-t.C:
return nil
case <-ctx.Done():
return ctx.Err()
}
select {
case <-t.C:
return nil
case <-ctx.Done():
return ctx.Err()
}
})
}
func ToLower(s string) string {
@ -54,3 +58,14 @@ func Unwrap(err error) error {
}
return u.Unwrap()
}
func WithSpan(ctx context.Context, name string, fn func(context.Context) error) error {
if !trace.SpanFromContext(ctx).IsRecording() {
return fn(ctx)
}
ctx, span := global.Tracer("go-redis").Start(ctx, name)
defer span.End()
return fn(ctx)
}