Skip to content

Commit fc93249

Browse files
authored
Merge pull request #159 from denniszag/fix/sentry-go-v0.46-compat
report: migrate Event.Extra to Event.Contexts (sentry-go v0.46+ compat)
2 parents 3c36bbd + ad7454c commit fc93249

5 files changed

Lines changed: 40 additions & 24 deletions

File tree

fmttests/datadriven_test.go

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -790,14 +790,19 @@ func TestDatadriven(t *testing.T) {
790790

791791
fmt.Fprintf(&buf, "== Message payload\n%s\n", se.Message)
792792

793-
// Make the extra key deterministic.
794-
extraNames := make([]string, 0, len(se.Extra))
795-
for ek := range se.Extra {
796-
extraNames = append(extraNames, ek)
793+
// Make the extra key deterministic. Only print entries
794+
// that carry our merged "value" sub-key so that Sentry's
795+
// built-in default contexts (device/os/runtime/trace) do
796+
// not leak into fixtures.
797+
extraNames := make([]string, 0, len(se.Contexts))
798+
for ek, ev := range se.Contexts {
799+
if _, ok := ev["value"]; ok {
800+
extraNames = append(extraNames, ek)
801+
}
797802
}
798803
sort.Strings(extraNames)
799804
for _, ek := range extraNames {
800-
extraS := fmt.Sprintf("%v", se.Extra[ek])
805+
extraS := fmt.Sprintf("%v", se.Contexts[ek]["value"])
801806
fmt.Fprintf(&buf, "== Extra %q\n%s\n", ek, strings.TrimSpace(extraS))
802807
}
803808

@@ -880,10 +885,18 @@ func (it interceptingTransport) Flush(time.Duration) bool {
880885
return true
881886
}
882887

888+
// FlushWithContext implements the sentry.Transport interface.
889+
func (it interceptingTransport) FlushWithContext(context.Context) bool {
890+
return true
891+
}
892+
883893
// Configure implements the sentry.Transport interface.
884894
func (it interceptingTransport) Configure(sentry.ClientOptions) {
885895
}
886896

897+
// Close implements the sentry.Transport interface.
898+
func (it interceptingTransport) Close() {}
899+
887900
// SendEvent implements the sentry.Transport interface.
888901
func (it interceptingTransport) SendEvent(event *sentry.Event) {
889902
it.SendFunc(event)

go.mod

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ require (
66
github.com/cockroachdb/datadriven v1.0.2
77
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b
88
github.com/cockroachdb/redact v1.1.5
9-
github.com/getsentry/sentry-go v0.27.0
9+
github.com/getsentry/sentry-go v0.46.0
1010
github.com/gogo/googleapis v1.4.1 // gogoproto 1.2-compatible, for CRDB
1111
github.com/gogo/protobuf v1.3.2
1212
github.com/gogo/status v1.1.0
1313
github.com/hydrogen18/memlistener v1.0.0
1414
github.com/kr/pretty v0.3.1
1515
github.com/pkg/errors v0.9.1
16-
github.com/stretchr/testify v1.8.2
16+
github.com/stretchr/testify v1.8.4
1717
google.golang.org/grpc v1.56.3
1818
google.golang.org/protobuf v1.33.0
1919
)
@@ -28,6 +28,5 @@ require (
2828
golang.org/x/sys v0.31.0 // indirect
2929
golang.org/x/text v0.23.0 // indirect
3030
google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect
31-
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
3231
gopkg.in/yaml.v3 v3.0.1 // indirect
3332
)

go.sum

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,10 @@ github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9D
55
github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30=
66
github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg=
77
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
8-
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
98
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
109
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
11-
github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps=
12-
github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY=
10+
github.com/getsentry/sentry-go v0.46.0 h1:mbdDaarbUdOt9X+dx6kDdntkShLEX3/+KyOsVDTPDj0=
11+
github.com/getsentry/sentry-go v0.46.0/go.mod h1:evVbw2qotNUdYG8KxXbAdjOQWWvWIwKxpjdZZIvcIPw=
1312
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
1413
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
1514
github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
@@ -31,11 +30,8 @@ github.com/hydrogen18/memlistener v1.0.0 h1:JR7eDj8HD6eXrc5fWLbSUnfcQFL06PYvCc0D
3130
github.com/hydrogen18/memlistener v1.0.0/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE=
3231
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
3332
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
34-
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
3533
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
3634
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
37-
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
38-
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
3935
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
4036
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
4137
github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4=
@@ -47,15 +43,12 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
4743
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
4844
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
4945
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
50-
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
51-
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
52-
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
53-
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
54-
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
55-
github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
56-
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
46+
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
47+
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
5748
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
5849
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
50+
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
51+
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
5952
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
6053
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
6154
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
@@ -101,6 +94,5 @@ google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHh
10194
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
10295
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
10396
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
104-
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
10597
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
10698
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

report/report.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -365,8 +365,11 @@ var redactedMarker = redact.RedactableString(redact.RedactedMarker()).StripMarke
365365
func ReportError(err error) (eventID string) {
366366
event, extraDetails := BuildSentryReport(err)
367367

368+
if event.Contexts == nil {
369+
event.Contexts = make(map[string]sentry.Context)
370+
}
368371
for extraKey, extraValue := range extraDetails {
369-
event.Extra[extraKey] = extraValue
372+
event.Contexts[extraKey] = sentry.Context{"value": extraValue}
370373
}
371374

372375
// Avoid leaking the machine's hostname by injecting the literal "<redacted>".

report/report_test.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
package report_test
1616

1717
import (
18+
"context"
1819
goErr "errors"
1920
"fmt"
2021
"strings"
@@ -126,7 +127,7 @@ github.com/cockroachdb/errors/withstack/*withstack.withStack (*::)
126127
github.com/cockroachdb/errors/domains/*domains.withDomain (*::error domain: "thisdomain")
127128
github.com/cockroachdb/errors/report_test/*report_test.myWrapper (some/previous/path/prevpkg.prevType::)
128129
`
129-
types := fmt.Sprintf("%s", e.Extra["error types"])
130+
types := fmt.Sprintf("%s", e.Contexts["error types"]["value"])
130131
tt.CheckEqual(types, expectedTypes)
131132
})
132133

@@ -183,6 +184,11 @@ func (it interceptingTransport) Flush(time.Duration) bool {
183184
return true
184185
}
185186

187+
// FlushWithContext implements the sentry.Transport interface.
188+
func (it interceptingTransport) FlushWithContext(context.Context) bool {
189+
return true
190+
}
191+
186192
// Configure implements the sentry.Transport interface.
187193
func (it interceptingTransport) Configure(sentry.ClientOptions) {
188194
}
@@ -191,3 +197,6 @@ func (it interceptingTransport) Configure(sentry.ClientOptions) {
191197
func (it interceptingTransport) SendEvent(event *sentry.Event) {
192198
it.SendFunc(event)
193199
}
200+
201+
// Close implements the sentry.Transport interface.
202+
func (it interceptingTransport) Close() {}

0 commit comments

Comments
 (0)