cockroach: github.com/aishraj/cockroach/util/tracing Index | Files

package tracing

import "github.com/aishraj/cockroach/util/tracing"

Package tracing is a generated protocol buffer package.

It is generated from these files:

cockroach/util/tracing/span.proto

It has these top-level messages:

Span

Index

Package Files

annotate.go format.go span.go span.pb.go tee_tracer.go tracer.go

Constants

const Snowball = "sb"

Snowball is set as Baggage on traces which are used for snowball tracing.

Variables

var (
    ErrInvalidLengthSpan = fmt.Errorf("proto: negative length found during unmarshaling")
    ErrIntOverflowSpan   = fmt.Errorf("proto: integer overflow")
)

func AnnotateTrace Uses

func AnnotateTrace()

AnnotateTrace adds an annotation to the golang executation tracer by calling a no-op cgo function.

func ChildSpan Uses

func ChildSpan(ctx context.Context, opName string) (context.Context, opentracing.Span)

ChildSpan opens a span as a child of the current span in the context (if there is one).

Returns the new context and the new span (if any). The span should be closed via FinishSpan.

func DecodeRawSpan Uses

func DecodeRawSpan(enc []byte, dest *basictracer.RawSpan) error

DecodeRawSpan unmarshals into the given RawSpan.

func Disable Uses

func Disable() func()

Disable is for benchmarking use and causes all future tracers to deal in no-ops. Calling the returned closure undoes this effect. There is no synchronization, so no moving parts are allowed while Disable and the closure are called.

func EncodeRawSpan Uses

func EncodeRawSpan(rawSpan *basictracer.RawSpan, dest []byte) ([]byte, error)

EncodeRawSpan encodes a raw span into bytes, using the given dest slice as a buffer.

func EnsureContext Uses

func EnsureContext(ctx context.Context, tracer opentracing.Tracer) (context.Context, func())

EnsureContext checks whether the given context.Context contains a Span. If not, it creates one using the provided Tracer and wraps it in the returned Span. The returned closure must be called after the request has been fully processed.

func FinishSpan Uses

func FinishSpan(span opentracing.Span)

FinishSpan closes the given span (if not nil). It is a convenience wrapper for span.Finish() which tolerates nil spans.

func ForkCtxSpan Uses

func ForkCtxSpan(ctx context.Context, opName string) (context.Context, opentracing.Span)

ForkCtxSpan checks if ctx has a Span open; if it does, it creates a new Span that follows from the original Span. This allows the resulting context to be used in an async task that might outlive the original operation.

Returns the new context and the new span (if any). The span should be closed via FinishSpan.

func FormatRawSpans Uses

func FormatRawSpans(spans []basictracer.RawSpan) string

FormatRawSpans formats the given spans for human consumption, showing the relationship using nesting and times as both relative to the previous event and cumulative.

func JoinOrNew Uses

func JoinOrNew(tr opentracing.Tracer, carrier *Span, opName string) (opentracing.Span, error)

JoinOrNew creates a new Span joined to the provided DelegatingCarrier or creates Span from the given tracer.

func JoinOrNewSnowball Uses

func JoinOrNewSnowball(
    opName string, carrier *Span, recorder func(sp basictracer.RawSpan),
) (opentracing.Span, error)

JoinOrNewSnowball returns a Span which records directly via the specified callback. If the given DelegatingCarrier is nil, a new Span is created. otherwise, the created Span is a child.

The recorder should be nil if we don't need to record spans.

TODO(andrei): JoinOrNewSnowball creates a new tracer, which is not kosher. Also this can't use the lightstep tracer.

func NewTeeTracer Uses

func NewTeeTracer(tracers ...opentracing.Tracer) opentracing.Tracer

NewTeeTracer creates a Tracer that sends events to multiple Tracers.

Note that only the span from the first tracer is used for serialization purposes (Inject/Extract).

func NewTracer Uses

func NewTracer() opentracing.Tracer

NewTracer creates a Tracer which records to the net/trace endpoint.

func NewTracerAndSpanFor7881 Uses

func NewTracerAndSpanFor7881(
    callback func(sp basictracer.RawSpan),
) (opentracing.Span, opentracing.Tracer, error)

NewTracerAndSpanFor7881 creates a new tracer and a root span. The tracer is to be used for tracking down #7881; it runs a callback for each finished span (and the callback used accumulates the spans in a SQL txn).

func TracerFromCtx Uses

func TracerFromCtx(ctx context.Context) opentracing.Tracer

TracerFromCtx returns the tracer set on the context (or a parent context) via WithTracer.

func WithTracer Uses

func WithTracer(ctx context.Context, tracer opentracing.Tracer) context.Context

WithTracer returns a context derived from the given context, for which TracerFromCtx returns the given tracer.

type CallbackRecorder Uses

type CallbackRecorder func(sp basictracer.RawSpan)

A CallbackRecorder immediately invokes itself on received trace spans.

func (CallbackRecorder) RecordSpan Uses

func (cr CallbackRecorder) RecordSpan(sp basictracer.RawSpan)

RecordSpan implements basictracer.SpanRecorder.

type Span Uses

type Span struct {
    TraceID uint64            `protobuf:"varint,1,opt,name=trace_id,json=traceId,proto3" json:"trace_id,omitempty"`
    SpanID  uint64            `protobuf:"varint,2,opt,name=span_id,json=spanId,proto3" json:"span_id,omitempty"`
    Sampled bool              `protobuf:"varint,3,opt,name=sampled,proto3" json:"sampled,omitempty"`
    Baggage map[string]string `protobuf:"bytes,4,rep,name=baggage" json:"baggage,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

A Span message holds metadata of a (potentially ongoing) span of a distributed trace as per the OpenTracing specification. See http://opentracing.io/spec/ for details.

func (*Span) Descriptor Uses

func (*Span) Descriptor() ([]byte, []int)

func (*Span) GetBaggage Uses

func (sp *Span) GetBaggage(fn func(key, value string))

GetBaggage implements basictracer.DelegatingCarrier.

func (*Span) Marshal Uses

func (m *Span) Marshal() (data []byte, err error)

func (*Span) MarshalTo Uses

func (m *Span) MarshalTo(data []byte) (int, error)

func (*Span) ProtoMessage Uses

func (*Span) ProtoMessage()

func (*Span) Reset Uses

func (m *Span) Reset()

func (*Span) SetBaggageItem Uses

func (sp *Span) SetBaggageItem(key, value string)

SetBaggageItem implements basictracer.DelegatingCarrier.

func (*Span) SetState Uses

func (sp *Span) SetState(traceID, spanID uint64, sampled bool)

SetState implements basictracer.DelegatingCarrier.

func (*Span) Size Uses

func (m *Span) Size() (n int)

func (*Span) State Uses

func (sp *Span) State() (traceID, spanID uint64, sampled bool)

State implements basictracer.DelegatingCarrier.

func (*Span) String Uses

func (m *Span) String() string

func (*Span) Unmarshal Uses

func (m *Span) Unmarshal(data []byte) error

type TeeSpan Uses

type TeeSpan struct {
    // contains filtered or unexported fields
}

TeeSpan is the opentracing.Span implementation used by the TeeTracer.

func (*TeeSpan) BaggageItem Uses

func (ts *TeeSpan) BaggageItem(restrictedKey string) string

BaggageItem is part of the opentracing.Span interface.

func (*TeeSpan) Context Uses

func (ts *TeeSpan) Context() opentracing.SpanContext

Context is part of the opentracing.Span interface.

func (*TeeSpan) Finish Uses

func (ts *TeeSpan) Finish()

Finish is part of the opentracing.Span interface.

func (*TeeSpan) FinishWithOptions Uses

func (ts *TeeSpan) FinishWithOptions(opts opentracing.FinishOptions)

FinishWithOptions is part of the opentracing.Span interface.

func (*TeeSpan) Log Uses

func (ts *TeeSpan) Log(data opentracing.LogData)

Log is part of the opentracing.Span interface.

func (*TeeSpan) LogEvent Uses

func (ts *TeeSpan) LogEvent(event string)

LogEvent is part of the opentracing.Span interface.

func (*TeeSpan) LogEventWithPayload Uses

func (ts *TeeSpan) LogEventWithPayload(event string, payload interface{})

LogEventWithPayload is part of the opentracing.Span interface.

func (*TeeSpan) LogFields Uses

func (ts *TeeSpan) LogFields(fields ...log.Field)

LogFields is part of the opentracing.Span interface.

func (*TeeSpan) LogKV Uses

func (ts *TeeSpan) LogKV(alternatingKeyValues ...interface{})

LogKV is part of the opentracing.Span interface.

func (*TeeSpan) SetBaggageItem Uses

func (ts *TeeSpan) SetBaggageItem(restrictedKey, value string) opentracing.Span

SetBaggageItem is part of the opentracing.Span interface.

func (*TeeSpan) SetOperationName Uses

func (ts *TeeSpan) SetOperationName(operationName string) opentracing.Span

SetOperationName is part of the opentracing.Span interface.

func (*TeeSpan) SetTag Uses

func (ts *TeeSpan) SetTag(key string, value interface{}) opentracing.Span

SetTag is part of the opentracing.Span interface.

func (*TeeSpan) Tracer Uses

func (ts *TeeSpan) Tracer() opentracing.Tracer

Tracer is part of the opentracing.Span interface.

type TeeSpanContext Uses

type TeeSpanContext struct {
    // contains filtered or unexported fields
}

TeeSpanContext is an opentracing.SpanContext that keeps track of SpanContexts from multiple tracers.

func (TeeSpanContext) ForeachBaggageItem Uses

func (tsc TeeSpanContext) ForeachBaggageItem(handler func(k, v string) bool)

ForeachBaggageItem is part of the opentracing.SpanContext interface.

type TeeTracer Uses

type TeeTracer struct {
    // contains filtered or unexported fields
}

TeeTracer is an opentracing.Tracer that sends events to multiple Tracers.

func (*TeeTracer) Extract Uses

func (t *TeeTracer) Extract(
    format interface{}, carrier interface{},
) (opentracing.SpanContext, error)

Extract is part of the opentracing.Tracer interface.

func (*TeeTracer) Inject Uses

func (t *TeeTracer) Inject(
    sc opentracing.SpanContext, format interface{}, carrier interface{},
) error

Inject is part of the opentracing.Tracer interface.

func (*TeeTracer) StartSpan Uses

func (t *TeeTracer) StartSpan(
    operationName string, opts ...opentracing.StartSpanOption,
) opentracing.Span

StartSpan is part of the opentracing.Tracer interface.

Package tracing imports 20 packages (graph). Updated 2017-03-14. Refresh now. Tools for package owners. This is an inactive package (no imports and no commits in at least two years).