Skip to content

Commit

Permalink
Skip links with invalid span context (#2275)
Browse files Browse the repository at this point in the history
* Skip links with invalid span context

* Add CHANGELOG entry

* Review suggestions
  • Loading branch information
srikanthccv committed Oct 12, 2021
1 parent c71afaf commit 8ba6da8
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 2 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Expand Up @@ -8,6 +8,10 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm

## [Unreleased]

## Changed

- Skip links with invalid span context. (#2275)

### Added

- Adds `otlptracegrpc.WithGRPCConn` and `otlpmetricgrpc.WithGRPCConn` for reusing existing gRPC connection. (#2002)
Expand Down
2 changes: 1 addition & 1 deletion sdk/trace/span.go
Expand Up @@ -453,7 +453,7 @@ func (s *recordingSpan) Resource() *resource.Resource {
}

func (s *recordingSpan) addLink(link trace.Link) {
if !s.IsRecording() {
if !s.IsRecording() || !link.SpanContext.IsValid() {
return
}
s.mu.Lock()
Expand Down
9 changes: 9 additions & 0 deletions sdk/trace/trace_test.go
Expand Up @@ -670,6 +670,15 @@ func TestLinks(t *testing.T) {
if diff := cmpDiff(got, want); diff != "" {
t.Errorf("Link: -got +want %s", diff)
}
sc1 = trace.NewSpanContext(trace.SpanContextConfig{TraceID: trace.TraceID([16]byte{1, 1}), SpanID: trace.SpanID{3}})

span1 := startSpan(tp, "name", trace.WithLinks([]trace.Link{
{SpanContext: trace.SpanContext{}},
{SpanContext: sc1},
}...))

sdkspan, _ := span1.(*recordingSpan)
require.Len(t, sdkspan.Links(), 1)
}

func TestLinksOverLimit(t *testing.T) {
Expand Down
2 changes: 1 addition & 1 deletion trace/config.go
Expand Up @@ -259,7 +259,7 @@ func WithStackTrace(b bool) SpanEndEventOption {
}

// WithLinks adds links to a Span. The links are added to the existing Span
// links, i.e. this does not overwrite.
// links, i.e. this does not overwrite. Links with invalid span context are ignored.
func WithLinks(links ...Link) SpanStartOption {
return spanOptionFunc(func(cfg *SpanConfig) {
cfg.links = append(cfg.links, links...)
Expand Down

0 comments on commit 8ba6da8

Please sign in to comment.