diff --git a/errors/errors.go b/errors/errors.go index 1d7ffe55..afad0c64 100644 --- a/errors/errors.go +++ b/errors/errors.go @@ -53,6 +53,22 @@ func (e *Error) Error() string { return string(b) } +/* +// Generator struct holds id of error +type Generator struct { + id string +} + +// Generator can emit new error with static id +func NewGenerator(id string) *Generator { + return &Generator{id: id} +} + +func (g *Generator) BadRequest(format string, args ...interface{}) error { + return BadRequest(g.id, format, args...) +} +*/ + // New generates a custom error func New(id, detail string, code int32) error { return &Error{ @@ -75,121 +91,121 @@ func Parse(err string) *Error { } // BadRequest generates a 400 error. -func BadRequest(id, format string, a ...interface{}) error { +func BadRequest(id, format string, args ...interface{}) error { return &Error{ ID: id, Code: 400, - Detail: fmt.Sprintf(format, a...), + Detail: fmt.Sprintf(format, args...), Status: http.StatusText(400), } } // Unauthorized generates a 401 error. -func Unauthorized(id, format string, a ...interface{}) error { +func Unauthorized(id, format string, args ...interface{}) error { return &Error{ ID: id, Code: 401, - Detail: fmt.Sprintf(format, a...), + Detail: fmt.Sprintf(format, args...), Status: http.StatusText(401), } } // Forbidden generates a 403 error. -func Forbidden(id, format string, a ...interface{}) error { +func Forbidden(id, format string, args ...interface{}) error { return &Error{ ID: id, Code: 403, - Detail: fmt.Sprintf(format, a...), + Detail: fmt.Sprintf(format, args...), Status: http.StatusText(403), } } // NotFound generates a 404 error. -func NotFound(id, format string, a ...interface{}) error { +func NotFound(id, format string, args ...interface{}) error { return &Error{ ID: id, Code: 404, - Detail: fmt.Sprintf(format, a...), + Detail: fmt.Sprintf(format, args...), Status: http.StatusText(404), } } // MethodNotAllowed generates a 405 error. -func MethodNotAllowed(id, format string, a ...interface{}) error { +func MethodNotAllowed(id, format string, args ...interface{}) error { return &Error{ ID: id, Code: 405, - Detail: fmt.Sprintf(format, a...), + Detail: fmt.Sprintf(format, args...), Status: http.StatusText(405), } } // Timeout generates a 408 error. -func Timeout(id, format string, a ...interface{}) error { +func Timeout(id, format string, args ...interface{}) error { return &Error{ ID: id, Code: 408, - Detail: fmt.Sprintf(format, a...), + Detail: fmt.Sprintf(format, args...), Status: http.StatusText(408), } } // Conflict generates a 409 error. -func Conflict(id, format string, a ...interface{}) error { +func Conflict(id, format string, args ...interface{}) error { return &Error{ ID: id, Code: 409, - Detail: fmt.Sprintf(format, a...), + Detail: fmt.Sprintf(format, args...), Status: http.StatusText(409), } } // InternalServerError generates a 500 error. -func InternalServerError(id, format string, a ...interface{}) error { +func InternalServerError(id, format string, args ...interface{}) error { return &Error{ ID: id, Code: 500, - Detail: fmt.Sprintf(format, a...), + Detail: fmt.Sprintf(format, args...), Status: http.StatusText(500), } } // NotImplemented generates a 501 error -func NotImplemented(id, format string, a ...interface{}) error { +func NotImplemented(id, format string, args ...interface{}) error { return &Error{ ID: id, Code: 501, - Detail: fmt.Sprintf(format, a...), + Detail: fmt.Sprintf(format, args...), Status: http.StatusText(501), } } // BadGateway generates a 502 error -func BadGateway(id, format string, a ...interface{}) error { +func BadGateway(id, format string, args ...interface{}) error { return &Error{ ID: id, Code: 502, - Detail: fmt.Sprintf(format, a...), + Detail: fmt.Sprintf(format, args...), Status: http.StatusText(502), } } // ServiceUnavailable generates a 503 error -func ServiceUnavailable(id, format string, a ...interface{}) error { +func ServiceUnavailable(id, format string, args ...interface{}) error { return &Error{ ID: id, Code: 503, - Detail: fmt.Sprintf(format, a...), + Detail: fmt.Sprintf(format, args...), Status: http.StatusText(503), } } // GatewayTimeout generates a 504 error -func GatewayTimeout(id, format string, a ...interface{}) error { +func GatewayTimeout(id, format string, args ...interface{}) error { return &Error{ ID: id, Code: 504, - Detail: fmt.Sprintf(format, a...), + Detail: fmt.Sprintf(format, args...), Status: http.StatusText(504), } } diff --git a/go.mod b/go.mod index e07fa95a..55996f01 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.16 require ( github.com/ef-ds/deque v1.0.4 - github.com/golang-jwt/jwt/v4 v4.1.0 + github.com/golang-jwt/jwt/v4 v4.2.0 github.com/imdario/mergo v0.3.12 github.com/patrickmn/go-cache v2.1.0+incompatible github.com/silas/dag v0.0.0-20210626123444-3804bac2d6d4 diff --git a/go.sum b/go.sum index e3e7fe0d..7dd8a101 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ github.com/ef-ds/deque v1.0.4 h1:iFAZNmveMT9WERAkqLJ+oaABF9AcVQ5AjXem/hroniI= github.com/ef-ds/deque v1.0.4/go.mod h1:gXDnTC3yqvBcHbq2lcExjtAcVrOnJCbMcZXmuj8Z4tg= -github.com/golang-jwt/jwt/v4 v4.1.0 h1:XUgk2Ex5veyVFVeLm0xhusUTQybEbexJXrvPNOKkSY0= -github.com/golang-jwt/jwt/v4 v4.1.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.2.0 h1:besgBTC8w8HjP6NzQdxwKH9Z5oQMZ24ThTrHp3cZ8eU= +github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= diff --git a/register/extractor_test.go b/register/extractor_test.go index 9bb6c895..d72c65a2 100644 --- a/register/extractor_test.go +++ b/register/extractor_test.go @@ -51,6 +51,4 @@ func TestExtractEndpoint(t *testing.T) { if endpoints[0].Response != "TestResponse" { t.Fatalf("Expected TestResponse got %s", endpoints[0].Response) } - - t.Logf("XXX %#+v\n", endpoints[0]) } diff --git a/tracer/wrapper/wrapper.go b/tracer/wrapper/wrapper.go index ba2aec14..626895ab 100644 --- a/tracer/wrapper/wrapper.go +++ b/tracer/wrapper/wrapper.go @@ -18,11 +18,11 @@ var ( if md, ok := metadata.FromOutgoingContext(ctx); ok { labels = make([]tracer.Label, 0, len(md)) for k, v := range md { - labels = append(labels, tracer.String(k, v)) + labels = append(labels, tracer.LabelString(k, v)) } } if err != nil { - labels = append(labels, tracer.Bool("error", true)) + labels = append(labels, tracer.LabelBool("error", true)) } sp.SetLabels(labels...) } @@ -33,11 +33,11 @@ var ( if md, ok := metadata.FromOutgoingContext(ctx); ok { labels = make([]tracer.Label, 0, len(md)) for k, v := range md { - labels = append(labels, tracer.String(k, v)) + labels = append(labels, tracer.LabelString(k, v)) } } if err != nil { - labels = append(labels, tracer.Bool("error", true)) + labels = append(labels, tracer.LabelBool("error", true)) } sp.SetLabels(labels...) } @@ -48,11 +48,11 @@ var ( if md, ok := metadata.FromOutgoingContext(ctx); ok { labels = make([]tracer.Label, 0, len(md)) for k, v := range md { - labels = append(labels, tracer.String(k, v)) + labels = append(labels, tracer.LabelString(k, v)) } } if err != nil { - labels = append(labels, tracer.Bool("error", true)) + labels = append(labels, tracer.LabelBool("error", true)) } sp.SetLabels(labels...) } @@ -63,11 +63,11 @@ var ( if md, ok := metadata.FromIncomingContext(ctx); ok { labels = make([]tracer.Label, 0, len(md)) for k, v := range md { - labels = append(labels, tracer.String(k, v)) + labels = append(labels, tracer.LabelString(k, v)) } } if err != nil { - labels = append(labels, tracer.Bool("error", true)) + labels = append(labels, tracer.LabelBool("error", true)) } sp.SetLabels(labels...) } @@ -78,11 +78,11 @@ var ( if md, ok := metadata.FromIncomingContext(ctx); ok { labels = make([]tracer.Label, 0, len(md)) for k, v := range md { - labels = append(labels, tracer.String(k, v)) + labels = append(labels, tracer.LabelString(k, v)) } } if err != nil { - labels = append(labels, tracer.Bool("error", true)) + labels = append(labels, tracer.LabelBool("error", true)) } sp.SetLabels(labels...) } @@ -93,11 +93,11 @@ var ( if md, ok := metadata.FromOutgoingContext(ctx); ok { labels = make([]tracer.Label, 0, len(md)) for k, v := range md { - labels = append(labels, tracer.String(k, v)) + labels = append(labels, tracer.LabelString(k, v)) } } if err != nil { - labels = append(labels, tracer.Bool("error", true)) + labels = append(labels, tracer.LabelBool("error", true)) } sp.SetLabels(labels...) } @@ -229,7 +229,10 @@ func (ot *tWrapper) Call(ctx context.Context, req client.Request, rsp interface{ } } - sp := tracer.SpanFromContext(ctx) + sp, ok := tracer.SpanFromContext(ctx) + if !ok { + ctx, sp = ot.opts.Tracer.Start(ctx, endpoint) + } defer sp.Finish() err := ot.Client.Call(ctx, req, rsp, opts...) @@ -249,7 +252,10 @@ func (ot *tWrapper) Stream(ctx context.Context, req client.Request, opts ...clie } } - sp := tracer.SpanFromContext(ctx) + sp, ok := tracer.SpanFromContext(ctx) + if !ok { + ctx, sp = ot.opts.Tracer.Start(ctx, endpoint) + } defer sp.Finish() stream, err := ot.Client.Stream(ctx, req, opts...) @@ -262,7 +268,10 @@ func (ot *tWrapper) Stream(ctx context.Context, req client.Request, opts ...clie } func (ot *tWrapper) Publish(ctx context.Context, msg client.Message, opts ...client.PublishOption) error { - sp := tracer.SpanFromContext(ctx) + sp, ok := tracer.SpanFromContext(ctx) + if !ok { + ctx, sp = ot.opts.Tracer.Start(ctx, msg.Topic()) + } defer sp.Finish() err := ot.Client.Publish(ctx, msg, opts...) @@ -282,7 +291,10 @@ func (ot *tWrapper) ServerHandler(ctx context.Context, req server.Request, rsp i } } - sp := tracer.SpanFromContext(ctx) + sp, ok := tracer.SpanFromContext(ctx) + if !ok { + ctx, sp = ot.opts.Tracer.Start(ctx, fmt.Sprintf("%s.%s", req.Service(), req.Endpoint())) + } defer sp.Finish() err := ot.serverHandler(ctx, req, rsp) @@ -295,7 +307,10 @@ func (ot *tWrapper) ServerHandler(ctx context.Context, req server.Request, rsp i } func (ot *tWrapper) ServerSubscriber(ctx context.Context, msg server.Message) error { - sp := tracer.SpanFromContext(ctx) + sp, ok := tracer.SpanFromContext(ctx) + if !ok { + ctx, sp = ot.opts.Tracer.Start(ctx, msg.Topic()) + } defer sp.Finish() err := ot.serverSubscriber(ctx, msg) @@ -339,7 +354,10 @@ func (ot *tWrapper) ClientCallFunc(ctx context.Context, addr string, req client. } } - sp := tracer.SpanFromContext(ctx) + sp, ok := tracer.SpanFromContext(ctx) + if !ok { + ctx, sp = ot.opts.Tracer.Start(ctx, endpoint) + } defer sp.Finish() err := ot.clientCallFunc(ctx, addr, req, rsp, opts)