Skip to content

Commit

Permalink
Fix grpc client (#42)
Browse files Browse the repository at this point in the history
* fix: barry 2024-08-24 21:53:40

* fix: barry 2024-08-24 22:12:38
  • Loading branch information
kooksee authored Sep 21, 2024
1 parent 31a1770 commit 0f32d62
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 14 deletions.
2 changes: 1 addition & 1 deletion clients/grpcc/grpcc_config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ var defaultOpts = []grpc.DialOption{grpc.WithDefaultServiceConfig(`{
type Cfg struct {
Client *GrpcClientCfg `yaml:"grpc_client"`
Service *ServiceCfg `yaml:"service"`
Resolvers []resolver.Builder `yaml:"-"`
Resolvers []resolver.Builder `yaml:"-" json:"-"`
}

type ServiceCfg struct {
Expand Down
7 changes: 3 additions & 4 deletions clients/grpcc/middleware.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,12 @@ func unaryInterceptor(middlewares []lava.Middleware) grpc.UnaryClientInterceptor
reqCtx := req.(*request)
header := make(metadata.MD)
trailer := make(metadata.MD)
reqCtx.opts = append(reqCtx.opts, grpc.Header(&header), grpc.Trailer(&trailer))

if err := reqCtx.invoker(ctx, reqCtx.method, reqCtx.req, reqCtx.reply, reqCtx.cc, reqCtx.opts...); err != nil {
opts := append(reqCtx.opts, grpc.Header(&header), grpc.Trailer(&trailer))
if err := reqCtx.invoker(ctx, reqCtx.method, reqCtx.req, reqCtx.reply, reqCtx.cc, opts...); err != nil {
return nil, err
}

rsp := &response{resp: reqCtx.resp, header: new(lava.ResponseHeader)}
rsp := &response{header: new(lava.ResponseHeader)}
md2Head(header, rsp.header)
md2Head(trailer, rsp.header)
return rsp, nil
Expand Down
32 changes: 23 additions & 9 deletions clients/grpcc/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"github.com/pubgo/lava/clients/grpcc/grpcc_resolver"
"github.com/pubgo/lava/core/logging/logkey"
"github.com/pubgo/lava/lava"
"github.com/rs/zerolog"
"google.golang.org/grpc"
)

Expand All @@ -31,22 +32,35 @@ func buildTarget(cfg *grpcc_config.ServiceCfg) string {
}
}

func createConn(cfg *grpcc_config.Cfg, log log.Logger, mm []lava.Middleware) (grpc.ClientConnInterface, error) {
func createConn(cfg *grpcc_config.Cfg, log log.Logger, mm []lava.Middleware) (_ grpc.ClientConnInterface, gErr error) {
addr := buildTarget(cfg.Service)

ee := log.Info().
Str(logkey.Service, cfg.Service.Name).
Str("addr", addr)
ee.Msg("grpc client init")
var logMsg = func(e *zerolog.Event) {
e.Any(logkey.Service, cfg.Service)
e.Any("config", cfg.Client)
e.Str("addr", addr)
}

defer func() {
if gErr == nil {
log.Info().
Func(logMsg).Msg("succeed to create grpc client")
} else {
log.Err(gErr).
Func(logMsg).Msg("failed to create grpc client")
}
}()

conn, err := grpc.NewClient(addr, append(
append(cfg.Client.ToOpts(), grpc.WithResolvers(cfg.Resolvers...)),
opts := append(
cfg.Client.ToOpts(),
grpc.WithResolvers(cfg.Resolvers...),
grpc.WithChainUnaryInterceptor(unaryInterceptor(mm)),
grpc.WithChainStreamInterceptor(streamInterceptor(mm)))...)
grpc.WithChainStreamInterceptor(streamInterceptor(mm)),
)
conn, err := grpc.NewClient(addr, opts...)
if err != nil {
return nil, errors.Wrapf(err, "grpc dial failed, target=>%s", addr)
}

ee.Msg("grpc client init ok")
return conn, nil
}

0 comments on commit 0f32d62

Please sign in to comment.