Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace zap with slog #5

Merged
merged 4 commits into from
Oct 13, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 23 additions & 32 deletions clientconn.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ package totem
import (
"context"
"fmt"
"log/slog"
"time"

"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/trace"
"go.uber.org/zap"
"google.golang.org/grpc"
"google.golang.org/grpc/metadata"
"google.golang.org/protobuf/proto"
Expand All @@ -18,7 +18,7 @@ import (
type ClientConn struct {
controller *StreamController
interceptor grpc.UnaryClientInterceptor
logger *zap.Logger
logger *slog.Logger
metrics *MetricsExporter
}

Expand Down Expand Up @@ -65,35 +65,32 @@ func (cc *ClientConn) invoke(
mdSupplier := metadataSupplier{&md}

lg := cc.logger.With(
zap.String("requestType", fmt.Sprintf("%T", req)),
zap.String("replyType", fmt.Sprintf("%T", reply)),
"requestType", fmt.Sprintf("%T", req),
"replyType", fmt.Sprintf("%T", reply),
)
var reqMsg []byte
switch req := req.(type) {
case *RPC:
serviceName = req.ServiceName
methodName = req.MethodName
lg.With(
zap.String("method", method),
).Debug("forwarding rpc")
lg.Debug("forwarding rpc", "method", method)

reqMsg = req.GetRequest()
if req.Metadata != nil {
md = metadata.Join(md, req.Metadata.ToMD())
}
case protoadapt.MessageV2:
lg.With(
zap.String("method", method),
).Debug("invoking method")
lg.Debug("invoking method", "method", method)

var err error
reqMsg, err = proto.Marshal(req)
if err != nil {
return err
}
case protoadapt.MessageV1:
reqv2 := protoadapt.MessageV2Of(req)
lg.With(
zap.String("method", method),
).Debug("invoking method")
lg.Debug("invoking method", "method", method)

var err error
reqMsg, err = proto.Marshal(reqv2)
if err != nil {
Expand Down Expand Up @@ -132,19 +129,17 @@ func (cc *ClientConn) invoke(
resp := rpc.GetResponse()
stat := resp.GetStatus()
if err := stat.Err(); err != nil {
cc.logger.With(
zap.Uint64("tag", rpc.Tag),
zap.String("method", method),
zap.Error(err),
).Debug("received reply with error")
cc.logger.Debug("received reply with error", "tag", rpc.Tag,
"method", method,
"error", err)

recordErrorStatus(span, stat)
return err
}

cc.logger.With(
zap.Uint64("tag", rpc.Tag),
zap.String("method", method),
).Debug("received reply")
cc.logger.Debug("received reply", "tag", rpc.Tag,
"method", method)

recordSuccess(span)
cc.metrics.TrackSvcTxLatency(serviceName, methodName, time.Since(startTime))
cc.metrics.TrackRxBytes(serviceName, methodName, int64(len(resp.Response)))
Expand All @@ -165,22 +160,18 @@ func (cc *ClientConn) invoke(
}
case protoadapt.MessageV2:
if err := proto.Unmarshal(resp.GetResponse(), reply); err != nil {
cc.logger.With(
zap.Uint64("tag", rpc.Tag),
zap.String("method", method),
zap.Error(err),
).Error("received malformed response message")
cc.logger.Error("received malformed response message", "tag", rpc.Tag,
"method", method,
"error", err)

return fmt.Errorf("[totem] malformed response: %w", err)
}
case protoadapt.MessageV1:
replyv2 := protoadapt.MessageV2Of(reply)
if err := proto.Unmarshal(resp.GetResponse(), replyv2); err != nil {
cc.logger.With(
zap.Uint64("tag", rpc.Tag),
zap.String("method", method),
zap.Error(err),
).Error("received malformed response message")
cc.logger.Error("received malformed response message", "tag", rpc.Tag,
"method", method,
"error", err)

return fmt.Errorf("[totem] malformed response: %w", err)
}
Expand Down
12 changes: 4 additions & 8 deletions discovery.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (

"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/trace"
"go.uber.org/zap"
"google.golang.org/protobuf/proto"
)

Expand Down Expand Up @@ -34,7 +33,7 @@ func discoverServices(ctx context.Context, ctrl *StreamController, opts discover
)
defer span.End()
lg = lg.With(
zap.String("traceID", span.SpanContext().TraceID().String()),
"traceID", span.SpanContext().TraceID().String(),
)
}
lg.Debug("starting service discovery")
Expand All @@ -51,9 +50,8 @@ func discoverServices(ctx context.Context, ctrl *StreamController, opts discover
respMsg := resp.GetResponse()
stat := respMsg.GetStatus()
if err := stat.Err(); err != nil {
lg.With(
zap.Error(err),
).Warn("discovery failed")
lg.Warn("discovery failed", "error", err)

return nil, err
}

Expand All @@ -69,9 +67,7 @@ func discoverServices(ctx context.Context, ctrl *StreamController, opts discover
), trace.WithTimestamp(time.Now()))
}

lg.With(
zap.Any("services", infoMsg.ServiceNames()),
).Debug("discovery complete")
lg.Debug("discovery complete", "services", infoMsg.ServiceNames())

return infoMsg, nil
}
10 changes: 0 additions & 10 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ go 1.21

require (
github.com/alitto/pond v1.8.3
github.com/charmbracelet/lipgloss v0.7.1
github.com/google/uuid v1.3.0
github.com/jhump/protoreflect v1.15.1
github.com/kralicky/gpkg v0.0.0-20220311205216-0d8ea9557555
Expand All @@ -22,15 +21,12 @@ require (
go.opentelemetry.io/otel/sdk/metric v0.39.0
go.opentelemetry.io/otel/trace v1.16.0
go.uber.org/atomic v1.11.0
go.uber.org/zap v1.25.0
google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5
google.golang.org/grpc v1.57.0
google.golang.org/protobuf v1.31.0
)

require (
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
github.com/benbjohnson/clock v1.3.3 // indirect
github.com/bmatcuk/doublestar v1.3.4 // indirect
github.com/bufbuild/protocompile v0.5.2-0.20230523010820-2b297241d0ff // indirect
github.com/cenkalti/backoff/v4 v4.2.1 // indirect
Expand All @@ -44,13 +40,7 @@ require (
github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 // indirect
github.com/iancoleman/strcase v0.3.0 // indirect
github.com/kr/pretty v0.3.1 // indirect
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
github.com/mattn/go-isatty v0.0.19 // indirect
github.com/mattn/go-runewidth v0.0.15 // indirect
github.com/muesli/reflow v0.3.0 // indirect
github.com/muesli/termenv v0.15.1 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/rivo/uniseg v0.4.4 // indirect
github.com/rogpeppe/go-internal v1.11.0 // indirect
github.com/samber/lo v1.38.1 // indirect
github.com/stretchr/testify v1.8.4 // indirect
Expand Down
24 changes: 0 additions & 24 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,6 @@ github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAE
github.com/alitto/pond v1.8.3 h1:ydIqygCLVPqIX/USe5EaV/aSRXTRXDEI9JwuDdu+/xs=
github.com/alitto/pond v1.8.3/go.mod h1:CmvIIGd5jKLasGI3D87qDkQxjzChdKMmnXMg3fG6M6Q=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
github.com/benbjohnson/clock v1.3.3 h1:g+rSsSaAzhHJYcIQE78hJ3AhyjjtQvleKDjlhdBnIhc=
github.com/benbjohnson/clock v1.3.3/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
github.com/bmatcuk/doublestar v1.3.4 h1:gPypJ5xD31uhX6Tf54sDPUOBXTqKH4c9aPY66CyQrS0=
github.com/bmatcuk/doublestar v1.3.4/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE=
github.com/bufbuild/protocompile v0.5.2-0.20230523010820-2b297241d0ff h1:rWp2XsgkEgqvNbtQ2Hp4r6HSAOmGglit5ulwwSPIATM=
Expand All @@ -55,8 +51,6 @@ github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyY
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E=
github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
Expand Down Expand Up @@ -182,19 +176,8 @@ github.com/kralicky/gpkg v0.0.0-20220311205216-0d8ea9557555 h1:w/v9aYd9gdL0pEofC
github.com/kralicky/gpkg v0.0.0-20220311205216-0d8ea9557555/go.mod h1:EJrGSfmocDg2CBjHDm3zy9oxNKCSGhf+MNTiN1DRbKA=
github.com/kralicky/ragu v1.0.11-0.20230530191519-84f5aaa5fd69 h1:Iqg6oc2ty1dLRiBJfj7EwyKy1O81zL8+wcW5uMRlnIg=
github.com/kralicky/ragu v1.0.11-0.20230530191519-84f5aaa5fd69/go.mod h1:njQGnwU5IHm4Qx6/oOY0ll7Z6WA0apfP0ClpVA0M27Q=
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg=
github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A=
github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s=
github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8=
github.com/muesli/termenv v0.15.1 h1:UzuTb/+hhlBugQz28rpzey4ZuKcZ03MeKsoG7IJZIxs=
github.com/muesli/termenv v0.15.1/go.mod h1:HeAQPTzpfs016yGtA4g00CsdYnVLJvxsS4ANqrZs2sQ=
github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU=
github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM=
github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI=
Expand All @@ -204,10 +187,6 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis=
github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
Expand Down Expand Up @@ -272,8 +251,6 @@ go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.uber.org/zap v1.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c=
go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
Expand Down Expand Up @@ -388,7 +365,6 @@ golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM=
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
Expand Down
40 changes: 17 additions & 23 deletions invokers.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ package totem

import (
"context"
"log/slog"
"time"

"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/trace"
"go.uber.org/zap"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/metadata"
Expand All @@ -26,7 +26,7 @@ type localServiceInvoker struct {
service *grpc.ServiceDesc
methods map[string]grpc.MethodDesc
streams map[string]grpc.StreamDesc
logger *zap.Logger
logger *slog.Logger
interceptor grpc.UnaryServerInterceptor
metrics *MetricsExporter
flags TopologyFlags
Expand All @@ -35,7 +35,7 @@ type localServiceInvoker struct {
func newLocalServiceInvoker(
serviceImpl interface{},
service *grpc.ServiceDesc,
logger *zap.Logger,
logger *slog.Logger,
interceptor grpc.UnaryServerInterceptor,
metrics *MetricsExporter,
baseTopologyFlags TopologyFlags,
Expand Down Expand Up @@ -64,12 +64,10 @@ func (l *localServiceInvoker) Invoke(ctx context.Context, req *RPC) ([]byte, err
serviceName := req.GetServiceName()
methodName := req.GetMethodName()

l.logger.With(
zap.String("service", serviceName),
zap.String("method", methodName),
zap.Uint64("tag", req.GetTag()),
zap.Strings("md", req.GetMetadata().Keys()),
).Debug("invoking method using local service")
l.logger.Debug("invoking method using local service", "service", serviceName,
"method", methodName,
"tag", req.GetTag(),
"md", req.GetMetadata().Keys())

span := trace.SpanFromContext(ctx)

Expand Down Expand Up @@ -140,11 +138,11 @@ func (l *localServiceInvoker) TopologyFlags() TopologyFlags {

type streamControllerInvoker struct {
controller *StreamController
logger *zap.Logger
logger *slog.Logger
flags TopologyFlags
}

func newStreamControllerInvoker(ctrl *StreamController, flags TopologyFlags, logger *zap.Logger) *streamControllerInvoker {
func newStreamControllerInvoker(ctrl *StreamController, flags TopologyFlags, logger *slog.Logger) *streamControllerInvoker {
return &streamControllerInvoker{
controller: ctrl,
logger: logger,
Expand All @@ -155,12 +153,10 @@ func newStreamControllerInvoker(ctrl *StreamController, flags TopologyFlags, log
func (r *streamControllerInvoker) Invoke(ctx context.Context, req *RPC) ([]byte, error) {
serviceName := req.GetServiceName()
methodName := req.GetMethodName()
r.logger.With(
zap.String("service", serviceName),
zap.String("method", methodName),
zap.Uint64("tag", req.GetTag()),
zap.Strings("md", req.GetMetadata().Keys()),
).Debug("invoking method using stream controller")
r.logger.Debug("invoking method using stream controller", "service", serviceName,
"method", methodName,
"tag", req.GetTag(),
"md", req.GetMetadata().Keys())

// convert the incoming context to an outgoing context
md, ok := metadata.FromIncomingContext(ctx)
Expand Down Expand Up @@ -200,12 +196,10 @@ func (r *streamControllerInvoker) InvokeStream(ctx context.Context, req *RPC, wc

serviceName := req.GetServiceName()
methodName := req.GetMethodName()
r.logger.With(
zap.String("service", serviceName),
zap.String("method", methodName),
zap.Uint64("tag", req.GetTag()),
zap.Strings("md", req.GetMetadata().Keys()),
).Debug("invoking stream using stream controller")
r.logger.Debug("invoking stream using stream controller", "service", serviceName,
"method", methodName,
"tag", req.GetTag(),
"md", req.GetMetadata().Keys())

// convert the incoming context to an outgoing context
md, ok := metadata.FromIncomingContext(ctx)
Expand Down
Loading