Documentation ¶
Overview ¶
Package trail integrates trace errors with GRPC
Example server that sends the GRPC error and attaches metadata:
func (s *server) Echo(ctx context.Context, message *gw.StringMessage) (*gw.StringMessage, error) { trace.SetDebug(true) // to tell trace to start attaching metadata // Send sends metadata via grpc header and converts error to GRPC compatible one return nil, trail.Send(ctx, trace.AccessDenied("missing authorization")) }
Example client reading error and trace debug info:
var header metadata.MD r, err := c.Echo(context.Background(), &gw.StringMessage{Value: message}, grpc.Header(&header)) if err != nil { // FromGRPC reads error, converts it back to trace error and attaches debug metadata // like stack trace of the error origin back to the error err = trail.FromGRPC(err, header)
/ // this line will log original trace of the error
log.Errorf("error saying echo: %v", trace.DebugReport(err)) return }
Index ¶
Constants ¶
const DebugReportMetadata = "trace-debug-report"
DebugReportMetadata is a key in metadata holding debug information about the error - stack traces and original error
Variables ¶
This section is empty.
Functions ¶
func DecodeDebugInfo ¶
DecodeDebugInfo decodes debug information about error from the metadata and returns error with enriched metadata about it
func FromGRPC ¶
FromGRPC converts error from GRPC error back to trace.Error Debug information will be retrieved from the metadata if specified in args
func Send ¶
Send is a high level function that: * converts error to GRPC error * attaches debug metadata to existing metadata if possible * sends the header to GRPC
func SetDebugInfo ¶
SetDebugInfo adds debug metadata about error (traces, original error) to request metadata as encoded property
Types ¶
This section is empty.