Skip to content

Releases: getsentry/sentry-go

0.21.0

08 May 14:07
Compare
Choose a tag to compare

The Sentry SDK team is happy to announce the immediate availability of Sentry Go SDK v0.21.0.

Note: this release includes one breaking change and some deprecations, which are listed below.

Breaking Changes

This change does not apply if you use https://sentry.io

  • Remove support for the /store endpoint (#631)
    • This change requires a self-hosted version of Sentry 20.6.0 or higher. If you are using a version of self-hosted Sentry (aka on-premise) older than 20.6.0, then you will need to upgrade your instance.

Features

  • Rename four span option functions (#611, #624)
    • TransctionSource -> WithTransactionSource
    • SpanSampled -> WithSpanSampled
    • OpName -> WithOpName
    • TransactionName -> WithTransactionName
    • Old functions TransctionSource, SpanSampled, OpName, and TransactionName are still available but are now deprecated and will be removed in a future release.
  • Make client.EventFromMessage and client.EventFromException methods public (#607)
  • Add client.SetException method (#607)
    • This allows to set or add errors to an existing Event.

Bug Fixes

  • Protect from panics while doing concurrent reads/writes to Span data fields (#609)
  • [otel] Improve detection of Sentry-related spans (#632, #636)
    • Fixes cases when HTTP spans containing requests to Sentry were captured by Sentry (#627)

Misc

0.20.0

31 Mar 09:54
Compare
Choose a tag to compare

The Sentry SDK team is happy to announce the immediate availability of Sentry Go SDK v0.20.0.

Note: this release has some breaking changes, which are listed below.

Breaking Changes

  • Remove the following methods: Scope.SetTransaction(), Scope.Transaction() (#605)

    Span.Name should be used instead to access the transaction's name.

    For example, the following TracesSampler function should be now written as follows:

    Before:

    TracesSampler: func(ctx sentry.SamplingContext) float64 {
      hub := sentry.GetHubFromContext(ctx.Span.Context())
      if hub.Scope().Transaction() == "GET /health" {
        return 0
      }
      return 1
    },

    After:

    TracesSampler: func(ctx sentry.SamplingContext) float64 {
      if ctx.Span.Name == "GET /health" {
        return 0
      }
      return 1
    },

Features

  • Add Span.SetContext() method (#599)
    • It is recommended to use it instead of hub.Scope().SetContext when setting or updating context on transactions.
  • Add DebugMeta interface to Event and extend Frame structure with more fields (#606)
    • More about DebugMeta interface here.

Bug Fixes

  • [otel] Fix missing OpenTelemetry context on some events (#599, #605)
  • [otel] Better handling for HTTP span attributes (#610)

Misc

0.19.0

06 Mar 07:46
Compare
Choose a tag to compare

The Sentry SDK team is happy to announce the immediate availability of Sentry Go SDK v0.19.0.

Features

  • Add support for exception mechanism metadata (#564)
    • More about exception mechanisms here.

Bug Fixes

  • [otel] Use the correct "trace" context when sending a Sentry error (#580)

Misc

  • Drop support for Go 1.17, add support for Go 1.20 (#563)
    • According to our policy, we're officially supporting the last three minor releases of Go.
  • Switch repository license to MIT (#583)
    • More about Sentry licensing here.
  • Bump golang.org/x/text minimum required version to 0.3.8 (#586)

0.18.0

07 Feb 14:19
Compare
Choose a tag to compare

The Sentry SDK team is happy to announce the immediate availability of Sentry Go SDK v0.18.0.
This release contains initial support for OpenTelemetry and various other bug fixes and improvements.

Note: This is the last release supporting Go 1.17.

Features

  • Initial support for OpenTelemetry.
    You can now send all your OpenTelemetry spans to Sentry.

    Install the otel module

    go get github.com/getsentry/sentry-go \
           github.com/getsentry/sentry-go/otel

    Configure the Sentry and OpenTelemetry SDKs

    import (
        "go.opentelemetry.io/otel"
        sdktrace "go.opentelemetry.io/otel/sdk/trace"
        "github.com/getsentry/sentry-go"
        "github.com/getsentry/sentry-go/otel"
        // ...
    )
    
    // Initlaize the Sentry SDK
    sentry.Init(sentry.ClientOptions{
        Dsn:              "__DSN__",
        EnableTracing:    true,
        TracesSampleRate: 1.0,
    })
    
    // Set up the Sentry span processor
    tp := sdktrace.NewTracerProvider(
        sdktrace.WithSpanProcessor(sentryotel.NewSentrySpanProcessor()),
        // ...
    )
    otel.SetTracerProvider(tp)
    
    // Set up the Sentry propagator
    otel.SetTextMapPropagator(sentryotel.NewSentryPropagator())

    You can read more about using OpenTelemetry with Sentry in our docs.

Bug Fixes

  • Do not freeze the Dynamic Sampling Context when no Sentry values are present in the baggage header (#532)
  • Create a frozen Dynamic Sampling Context when calling span.ToBaggage() (#566)
  • Fix baggage parsing and encoding in vendored otel package (#568)

Misc

  • Add Span.SetDynamicSamplingContext() (#539)
  • Add various getters for Dsn (#540)
  • Add SpanOption::SpanSampled (#546)
  • Add Span.SetData() (#542)
  • Add Span.IsTransaction() (#543)
  • Add Span.GetTransaction() method (#558)

0.17.0

12 Jan 12:49
Compare
Choose a tag to compare

The Sentry SDK team is happy to announce the immediate availability of Sentry Go SDK v0.17.0.
This release contains a new BeforeSendTransaction hook option and corrects two regressions introduced in 0.16.0.

Features

  • Add BeforeSendTransaction hook to ClientOptions (#517)
    • Here's an example of how BeforeSendTransaction can be used to modify or drop transaction events.

Bug Fixes

  • Do not crash in Span.Finish() when the Client is empty (#520)
  • Attach non-PII/non-sensitive request headers to events when ClientOptions.SendDefaultPii is set to false (#524)

Misc

  • Clarify how to handle logrus.Fatalf events (#501)
  • Rename the examples directory to _examples (#521)
    • This removes an indirect dependency to github.com/golang-jwt/jwt

0.16.0

07 Dec 11:38
Compare
Choose a tag to compare

The Sentry SDK team is happy to announce the immediate availability of Sentry Go SDK v0.16.0.
Due to ongoing work towards a stable API for v1.0.0, we sadly had to include two breaking changes in this release.

Breaking Changes

  • Add EnableTracing, a boolean option flag to enable performance monitoring (false by default).
    • If you're using TracesSampleRate or TracesSampler, this option is required to enable performance monitoring.

      sentry.Init(sentry.ClientOptions{
          EnableTracing: true,
          TracesSampleRate: 1.0,
      })
  • Unify TracesSampler #498
    • TracesSampler was changed to a callback that must return a float64 between 0.0 and 1.0.

      For example, you can apply a sample rate of 1.0 (100%) to all /api transactions, and a sample rate of 0.5 (50%) to all other transactions.
      You can read more about this in our SDK docs.

      sentry.Init(sentry.ClientOptions{
          TracesSampler: sentry.TracesSampler(func(ctx sentry.SamplingContext) float64 {
               hub := sentry.GetHubFromContext(ctx.Span.Context())
               name := hub.Scope().Transaction()
      
               if strings.HasPrefix(name, "GET /api") {
                   return 1.0
               }
      
               return 0.5
           }),
       }

Features

  • Send errors logged with Logrus to Sentry.
  • Add support for Dynamic Sampling #491
    • You can read more about Dynamic Sampling in our product docs.
  • Add detailed logging about the reason transactions are being dropped.
    • You can enable SDK logging via sentry.ClientOptions.Debug: true.

Bug Fixes

  • Do not clone the hub when calling StartTransaction #505

0.15.0

09 Nov 10:36
Compare
Choose a tag to compare
  • fix: Scope values should not override Event values (#446)
  • feat: Make maximum amount of spans configurable (#460)
  • feat: Add a method to start a transaction (#482)
  • feat: Extend User interface by adding Data, Name and Segment (#483)
  • feat: Add ClientOptions.SendDefaultPII (#485)

0.14.0

04 Oct 17:09
Compare
Choose a tag to compare
  • feat: Add function to continue from trace string (#434)
  • feat: Add max-depth options (#428)
  • [breaking] ref: Use a Context type mapping to a map[string]interface{} for all event contexts (#444)
  • [breaking] ref: Replace deprecated ioutil pkg with os & io (#454)
  • ref: Optimize stacktrace.go from size and speed (#467)
  • ci: Test against go1.19 and go1.18, drop go1.16 and go1.15 support (#432, #477)
  • deps: Dependency update to fix CVEs (#462, #464, #477)

NOTE: This version drops support for Go 1.16 and Go 1.15. The currently supported Go versions are the last 3 stable releases: 1.19, 1.18 and 1.17.

v0.13.0

10 Mar 11:01
Compare
Choose a tag to compare
  • ref: Change DSN ProjectID to be a string (#420)
  • fix: When extracting PCs from stack frames, try the PC field (#393)
  • build: Bump gin-gonic/gin from v1.4.0 to v1.7.7 (#412)
  • build: Bump Go version in go.mod (#410)
  • ci: Bump golangci-lint version in GH workflow (#419)
  • ci: Update GraphQL config with appropriate permissions (#417)
  • ci: Add craft release automation (#422)

v0.12.0

22 Dec 15:25
Compare
Choose a tag to compare
  • feat: Automatic Release detection (#363, #369, #386, #400)
  • fix: Do not change Hub.lastEventID for transactions (#379)
  • fix: Do not clear LastEventID when events are dropped (#382)
  • Updates to documentation (#366, #385)

NOTE:
This version drops support for Go 1.14, however no changes have been made that would make the SDK not work with Go 1.14. The currently supported Go versions are the last 3 stable releases: 1.15, 1.16 and 1.17.
There are two behavior changes related to LastEventID, both of which were intended to align the behavior of the Sentry Go SDK with other Sentry SDKs.
The new automatic release detection feature makes it easier to use Sentry and separate events per release without requiring extra work from users. We intend to improve this functionality in a future release by utilizing information that will be available in runtime starting with Go 1.18. The tracking issue is #401.