19 KiB
Changelog
0.16.0
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 (falseby default).-
If you're using
TracesSampleRateorTracesSampler, this option is required to enable performance monitoring.sentry.Init(sentry.ClientOptions{ EnableTracing: true, TracesSampleRate: 1.0, })
-
- Unify TracesSampler #498
-
TracesSamplerwas changed to a callback that must return afloat64between0.0and1.0.For example, you can apply a sample rate of
1.0(100%) to all/apitransactions, and a sample rate of0.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.
- Have a look at our logrus examples on how to use the integration.
- 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.
- You can enable SDK logging via
Bug Fixes
0.15.0
- 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
- feat: Add function to continue from trace string (#434)
- feat: Add
max-depthoptions (#428) - [breaking] ref: Use a
Contexttype mapping to amap[string]interface{}for all event contexts (#444) - [breaking] ref: Replace deprecated
ioutilpkg withos&io(#454) - ref: Optimize
stacktrace.gofrom size and speed (#467) - ci: Test against
go1.19andgo1.18, dropgo1.16andgo1.15support (#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
- ref: Change DSN ProjectID to be a string (#420)
- fix: When extracting PCs from stack frames, try the
PCfield (#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: ci: Add craft release automation (#422)
v0.12.0
- 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.
v0.11.0
- feat(transports): Category-based Rate Limiting (#354)
- feat(transports): Report User-Agent identifying SDK (#357)
- fix(scope): Include event processors in clone (#349)
- Improvements to
go docdocumentation (#344, #350, #351) - Miscellaneous changes to our testing infrastructure with GitHub Actions (57123a40, #128, #338, #345, #346, #352, #353, #355)
NOTE:
This version drops support for Go 1.13. The currently supported Go versions are the last 3 stable releases: 1.14, 1.15 and 1.16.
Users of the tracing functionality (StartSpan, etc) should upgrade to this version to benefit from separate rate limits for errors and transactions.
There are no breaking changes and upgrading should be a smooth experience for all users.
v0.10.0
- feat: Debug connection reuse (#323)
- fix: Send root span data as
Event.Extra(#329) - fix: Do not double sample transactions (#328)
- fix: Do not override trace context of transactions (#327)
- fix: Drain and close API response bodies (#322)
- ci: Run tests against Go tip (#319)
- ci: Move away from Travis in favor of GitHub Actions (#314) (#321)
v0.9.0
- feat: Initial tracing and performance monitoring support (#285)
- doc: Revamp sentryhttp documentation (#304)
- fix: Hub.PopScope never empties the scope stack (#300)
- ref: Report Event.Timestamp in local time (#299)
- ref: Report Breadcrumb.Timestamp in local time (#299)
NOTE:
This version introduces support for Sentry's Performance Monitoring.
The new tracing capabilities are beta, and we plan to expand them on future versions. Feedback is welcome, please open new issues on GitHub.
The sentryhttp package got better API docs, an updated usage example and support for creating automatic transactions as part of Performance Monitoring.
v0.8.0
- build: Bump required version of Iris (#296)
- fix: avoid unnecessary allocation in Client.processEvent (#293)
- doc: Remove deprecation of sentryhttp.HandleFunc (#284)
- ref: Update sentryhttp example (#283)
- doc: Improve documentation of sentryhttp package (#282)
- doc: Clarify SampleRate documentation (#279)
- fix: Remove RawStacktrace (#278)
- docs: Add example of custom HTTP transport
- ci: Test against go1.15, drop go1.12 support (#271)
NOTE:
This version comes with a few updates. Some examples and documentation have been
improved. We've bumped the supported version of the Iris framework to avoid
LGPL-licensed modules in the module dependency graph.
The Exception.RawStacktrace and Thread.RawStacktrace fields have been
removed to conform to Sentry's ingestion protocol, only Exception.Stacktrace
and Thread.Stacktrace should appear in user code.
v0.7.0
- feat: Include original error when event cannot be encoded as JSON (#258)
- feat: Use Hub from request context when available (#217, #259)
- feat: Extract stack frames from golang.org/x/xerrors (#262)
- feat: Make Environment Integration preserve existing context data (#261)
- feat: Recover and RecoverWithContext with arbitrary types (#268)
- feat: Report bad usage of CaptureMessage and CaptureEvent (#269)
- feat: Send debug logging to stderr by default (#266)
- feat: Several improvements to documentation (#223, #245, #250, #265)
- feat: Example of Recover followed by panic (#241, #247)
- feat: Add Transactions and Spans (to support OpenTelemetry Sentry Exporter) (#235, #243, #254)
- fix: Set either Frame.Filename or Frame.AbsPath (#233)
- fix: Clone requestBody to new Scope (#244)
- fix: Synchronize access and mutation of Hub.lastEventID (#264)
- fix: Avoid repeated syscalls in prepareEvent (#256)
- fix: Do not allocate new RNG for every event (#256)
- fix: Remove stale replace directive in go.mod (#255)
- fix(http): Deprecate HandleFunc, remove duplication (#260)
NOTE: This version comes packed with several fixes and improvements and no breaking changes. Notably, there is a change in how the SDK reports file names in stack traces that should resolve any ambiguity when looking at stack traces and using the Suspect Commits feature. We recommend all users to upgrade.
v0.6.1
- fix: Use NewEvent to init Event struct (#220)
NOTE: A change introduced in v0.6.0 with the intent of avoiding allocations made a pattern used in official examples break in certain circumstances (attempting to write to a nil map). This release reverts the change such that maps in the Event struct are always allocated.
v0.6.0
- feat: Read module dependencies from runtime/debug (#199)
- feat: Support chained errors using Unwrap (#206)
- feat: Report chain of errors when available (#185)
- [breaking] fix: Accept http.RoundTripper to customize transport (#205)
Before the SDK accepted a concrete value of type
*http.TransportinClientOptions, now it accepts any value implementing thehttp.RoundTripperinterface. Note that*http.Transportimplementshttp.RoundTripper, so most code bases will continue to work unchanged. Users of custom transport gain the ability to pass in other implementations ofhttp.RoundTripperand may be able to simplify their code bases. - fix: Do not panic when scope event processor drops event (#192)
- [breaking] fix: Use time.Time for timestamps (#191)
Users of sentry-go typically do not need to manipulate timestamps manually.
For those who do, the field type changed from
int64totime.Time, which should be more convenient to use. The recommended way to get the current time istime.Now().UTC(). - fix: Report usage error including stack trace (#189)
- feat: Add Exception.ThreadID field (#183)
- ci: Test against Go 1.14, drop 1.11 (#170)
- feat: Limit reading bytes from request bodies (#168)
- [breaking] fix: Rename fasthttp integration package sentryhttp => sentryfasthttp
The current recommendation is to use a named import, in which case existing
code should not require any change:
package main import ( "fmt" "github.com/getsentry/sentry-go" sentryfasthttp "github.com/getsentry/sentry-go/fasthttp" "github.com/valyala/fasthttp" )
NOTE: This version includes some new features and a few breaking changes, none of which should pose troubles with upgrading. Most code bases should be able to upgrade without any changes.
v0.5.1
- fix: Ignore err.Cause() when it is nil (#160)
v0.5.0
- fix: Synchronize access to HTTPTransport.disabledUntil (#158)
- docs: Update Flush documentation (#153)
- fix: HTTPTransport.Flush panic and data race (#140)
NOTE:
This version changes the implementation of the default transport, modifying the
behavior of sentry.Flush. The previous behavior was to wait until there were
no buffered events; new concurrent events kept Flush from returning. The new
behavior is to wait until the last event prior to the call to Flush has been
sent or the timeout; new concurrent events have no effect. The new behavior is
inline with the Unified API
Guidelines.
We have updated the documentation and examples to clarify that Flush is meant
to be called typically only once before program termination, to wait for
in-flight events to be sent to Sentry. Calling Flush after every event is not
recommended, as it introduces unnecessary latency to the surrounding function.
Please verify the usage of sentry.Flush in your code base.
v0.4.0
- fix(stacktrace): Correctly report package names (#127)
- fix(stacktrace): Do not rely on AbsPath of files (#123)
- build: Require github.com/ugorji/go@v1.1.7 (#110)
- fix: Correctly store last event id (#99)
- fix: Include request body in event payload (#94)
- build: Reset go.mod version to 1.11 (#109)
- fix: Eliminate data race in modules integration (#105)
- feat: Add support for path prefixes in the DSN (#102)
- feat: Add HTTPClient option (#86)
- feat: Extract correct type and value from top-most error (#85)
- feat: Check for broken pipe errors in Gin integration (#82)
- fix: Client.CaptureMessage accept nil EventModifier (#72)
v0.3.1
- feat: Send extra information exposed by the Go runtime (#76)
- fix: Handle new lines in module integration (#65)
- fix: Make sure that cache is locked when updating for contextifyFramesIntegration
- ref: Update Iris integration and example to version 12
- misc: Remove indirect dependencies in order to move them to separate go.mod files
v0.3.0
- feat: Retry event marshaling without contextual data if the first pass fails
- fix: Include
url.Parseerror inDsnParseError - fix: Make more
Scopemethods safe for concurrency - fix: Synchronize concurrent access to
Hub.client - ref: Remove mutex from
Scopeexported API - ref: Remove mutex from
Hubexported API - ref: Compile regexps for
filterFramesonly once - ref: Change
SampleRatetype tofloat64 - doc:
Scope.Clearnot safe for concurrent use - ci: Test sentry-go with
go1.13, dropgo1.10
NOTE:
This version removes some of the internal APIs that landed publicly (namely Hub/Scope mutex structs) and may require (but shouldn't) some changes to your code.
It's not done through major version update, as we are still in 0.x stage.
v0.2.1
- fix: Run
Contextifyintegration onThreadsas well
v0.2.0
- feat: Add
SetTransaction()method on theScope - feat:
fasthttpframework support withsentryfasthttppackage - fix: Add
RWMutexlocks to internalHubandScopechanges
v0.1.3
- feat: Move frames context reading into
contextifyFramesIntegration(#28)
NOTE: In case of any performance issues due to source contexts IO, you can let us know and turn off the integration in the meantime with:
sentry.Init(sentry.ClientOptions{
Integrations: func(integrations []sentry.Integration) []sentry.Integration {
var filteredIntegrations []sentry.Integration
for _, integration := range integrations {
if integration.Name() == "ContextifyFrames" {
continue
}
filteredIntegrations = append(filteredIntegrations, integration)
}
return filteredIntegrations
},
})
v0.1.2
- feat: Better source code location resolution and more useful inapp frames (#26)
- feat: Use
noopTransportwhen noDsnprovided (#27) - ref: Allow empty
Dsninstead of returning an error (#22) - fix: Use
NewScopeinstead of literal struct inside ascope.Clearcall (#24) - fix: Add to
WaitGroupbefore the request is put inside a buffer (#25)
v0.1.1
- fix: Check for initialized
ClientinAddBreadcrumbs(#20) - build: Bump version when releasing with Craft (#19)
v0.1.0
- First stable release! \o/
v0.0.1-beta.5
- feat: [breaking] Add
NewHTTPTransportandNewHTTPSyncTransportwhich accepts all transport options - feat: New
HTTPSyncTransportthat blocks after each call - feat: New
Echointegration - ref: [breaking] Remove
BufferSizeoption fromClientOptionsand move it toHTTPTransportinstead - ref: Export default
HTTPTransport - ref: Export
net/httpintegration handler - ref: Set
Requestinstantly in the package handlers, not inrecoverWithSentryso it can be accessed later on - ci: Add craft config
v0.0.1-beta.4
- feat:
IgnoreErrorsclient option and corresponding integration - ref: Reworked
net/httpintegration, wrote better example and complete readme - ref: Reworked
Ginintegration, wrote better example and complete readme - ref: Reworked
Irisintegration, wrote better example and complete readme - ref: Reworked
Negroniintegration, wrote better example and complete readme - ref: Reworked
Martiniintegration, wrote better example and complete readme - ref: Remove
Handle()from frameworks handlers and return it directly from New
v0.0.1-beta.3
- feat:
Irisframework support withsentryirispackage - feat:
Ginframework support withsentryginpackage - feat:
Martiniframework support withsentrymartinipackage - feat:
Negroniframework support withsentrynegronipackage - feat: Add
Hub.Clone()for easier frameworks integration - feat: Return
EventIDfromRecoverymethods - feat: Add
NewScopeandNewEventfunctions and use them in the whole codebase - feat: Add
AddEventProcessorto theClient - fix: Operate on requests body copy instead of the original
- ref: Try to read source files from the root directory, based on the filename as well, to make it work on AWS Lambda
- ref: Remove
gocertifidependence and document how to provide your own certificates - ref: [breaking] Remove
DecorateandDecorateFuncmethods in favor ofsentryhttppackage - ref: [breaking] Allow for integrations to live on the client, by passing client instance in
SetupOncemethod - ref: [breaking] Remove
GetIntegrationfrom theHub - ref: [breaking] Remove
GlobalEventProcessorsgetter from the public API
v0.0.1-beta.2
- feat: Add
AttachStacktraceclient option to include stacktrace for messages - feat: Add
BufferSizeclient option to configure transport buffer size - feat: Add
SetRequestmethod on aScopeto controlRequestcontext data - feat: Add
FromHTTPRequestforRequesttype for easier extraction - ref: Extract
Requestinformation more accurately - fix: Attach
ServerName,Release,Dist,Environmentoptions to the event - fix: Don't log events dropped due to full transport buffer as sent
- fix: Don't panic and create an appropriate event when called
CaptureExceptionorRecoverwithnilvalue
v0.0.1-beta
- Initial release