db.go 995 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package trace
  2. import (
  3. "context"
  4. "git.shuncheng.lu/bigthing/gocommon/pkg/internal/constant"
  5. "github.com/SkyAPM/go2sky"
  6. v3 "github.com/SkyAPM/go2sky/reporter/grpc/language-agent"
  7. )
  8. func NewMysqlExitSpan(ctx context.Context, dbName string) (go2sky.Span, error) {
  9. span, err := GinNewExitSpan(ctx, "MySQL", dbName, func(header string) error {
  10. // todo 目前不知道 mysql 如何传递 skywalking的header
  11. return nil
  12. })
  13. if span == nil || err != nil {
  14. return nil, err
  15. }
  16. span.SetSpanLayer(v3.SpanLayer_Database)
  17. span.SetComponent(MysqlComponentID)
  18. span.Tag("db.name", dbName)
  19. return span, nil
  20. }
  21. func SetMySqlExitSpan(ctx context.Context, span go2sky.Span) context.Context {
  22. if ctx == nil {
  23. ctx = context.Background()
  24. }
  25. if span == nil {
  26. return ctx
  27. }
  28. return context.WithValue(ctx, constant.DbSpanKey, span)
  29. }
  30. func GetMySqlExitSpan(ctx context.Context) go2sky.Span {
  31. if ctx == nil {
  32. return nil
  33. }
  34. span, _ := ctx.Value(constant.DbSpanKey).(go2sky.Span)
  35. return span
  36. }