package trace import ( "context" "git.shuncheng.lu/bigthing/gocommon/pkg/internal/constant" "github.com/SkyAPM/go2sky" v3 "github.com/SkyAPM/go2sky/reporter/grpc/language-agent" ) func NewMysqlExitSpan(ctx context.Context, dbName string) (go2sky.Span, error) { span, err := GinNewExitSpan(ctx, "MySQL", dbName, func(header string) error { // todo 目前不知道 mysql 如何传递 skywalking的header return nil }) if span == nil || err != nil { return nil, err } span.SetSpanLayer(v3.SpanLayer_Database) span.SetComponent(MysqlComponentID) span.Tag("db.name", dbName) return span, nil } func SetMySqlExitSpan(ctx context.Context, span go2sky.Span) context.Context { if ctx == nil { ctx = context.Background() } if span == nil { return ctx } return context.WithValue(ctx, constant.DbSpanKey, span) } func GetMySqlExitSpan(ctx context.Context) go2sky.Span { if ctx == nil { return nil } span, _ := ctx.Value(constant.DbSpanKey).(go2sky.Span) return span }