Skip to content

Commit

Permalink
Merge pull request #5 from jan-law/slog
Browse files Browse the repository at this point in the history
Replace zap with slog
  • Loading branch information
kralicky committed Oct 13, 2023
2 parents 84e0ff4 + c8427f9 commit ab56f54
Show file tree
Hide file tree
Showing 9 changed files with 97 additions and 257 deletions.
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

0 comments on commit ab56f54

Please sign in to comment.