From 645b96c1379becceb100f9ba575ea1f11c8c98a2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 14 Aug 2025 16:08:38 +0000 Subject: [PATCH] Update module github.com/getsentry/raven-go to v0.2.0 --- openstack-seeder/go.mod | 2 +- openstack-seeder/go.sum | 2 + .../github.com/getsentry/raven-go/.gitignore | 6 +- .../github.com/getsentry/raven-go/.gitmodules | 3 - .../github.com/getsentry/raven-go/.travis.yml | 29 +++++-- .../github.com/getsentry/raven-go/README.md | 10 ++- .../github.com/getsentry/raven-go/client.go | 2 +- .../github.com/getsentry/raven-go/http.go | 22 +++++- .../getsentry/raven-go/stacktrace.go | 76 ++++++++++++------- openstack-seeder/vendor/modules.txt | 2 +- 10 files changed, 106 insertions(+), 48 deletions(-) diff --git a/openstack-seeder/go.mod b/openstack-seeder/go.mod index f68414b25..c7f8b53ae 100644 --- a/openstack-seeder/go.mod +++ b/openstack-seeder/go.mod @@ -3,7 +3,7 @@ module github.com/sapcc/kubernetes-operators/openstack-seeder go 1.22.0 require ( - github.com/getsentry/raven-go v0.0.0-20180517221441-ed7bcb39ff10 + github.com/getsentry/raven-go v0.2.0 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b github.com/spf13/pflag v1.0.2-0.20180601132542-3ebe029320b2 gopkg.in/yaml.v2 v2.0.0-20170721113624-670d4cfef054 diff --git a/openstack-seeder/go.sum b/openstack-seeder/go.sum index 78498fe1a..f2991c207 100644 --- a/openstack-seeder/go.sum +++ b/openstack-seeder/go.sum @@ -16,6 +16,8 @@ github.com/emicklei/go-restful-swagger12 v0.0.0-20170208215640-dcef7f557305 h1:2 github.com/emicklei/go-restful-swagger12 v0.0.0-20170208215640-dcef7f557305/go.mod h1:qr0VowGBT4CS4Q8vFF8BSeKz34PuqKGxs/L0IAQA9DQ= github.com/getsentry/raven-go v0.0.0-20180517221441-ed7bcb39ff10 h1:YO10pIIBftO/kkTFdWhctH96grJ7qiy7bMdiZcIvPKs= github.com/getsentry/raven-go v0.0.0-20180517221441-ed7bcb39ff10/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= +github.com/getsentry/raven-go v0.2.0 h1:no+xWJRb5ZI7eE8TWgIq1jLulQiIoLG0IfYxv5JYMGs= +github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680 h1:ZktWZesgun21uEDrwW7iEV1zPCGQldM2atlJZ3TdvVM= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-openapi/analysis v0.0.0-20160815203709-b44dc874b601 h1:0puMfPt1Uwv6yAyiIm/kkCdxRFURsaHGLuqyBmNTaHU= diff --git a/openstack-seeder/vendor/github.com/getsentry/raven-go/.gitignore b/openstack-seeder/vendor/github.com/getsentry/raven-go/.gitignore index 797da7846..0f66ce75d 100644 --- a/openstack-seeder/vendor/github.com/getsentry/raven-go/.gitignore +++ b/openstack-seeder/vendor/github.com/getsentry/raven-go/.gitignore @@ -1,5 +1,5 @@ *.test +*.out example/example - -docs/_build -docs/doctrees +/xunit.xml +/coverage.xml diff --git a/openstack-seeder/vendor/github.com/getsentry/raven-go/.gitmodules b/openstack-seeder/vendor/github.com/getsentry/raven-go/.gitmodules index 1e6464ab9..e69de29bb 100644 --- a/openstack-seeder/vendor/github.com/getsentry/raven-go/.gitmodules +++ b/openstack-seeder/vendor/github.com/getsentry/raven-go/.gitmodules @@ -1,3 +0,0 @@ -[submodule "docs/_sentryext"] - path = docs/_sentryext - url = https://github.com/getsentry/sentry-doc-support diff --git a/openstack-seeder/vendor/github.com/getsentry/raven-go/.travis.yml b/openstack-seeder/vendor/github.com/getsentry/raven-go/.travis.yml index 9f0d54887..8ec4eca81 100644 --- a/openstack-seeder/vendor/github.com/getsentry/raven-go/.travis.yml +++ b/openstack-seeder/vendor/github.com/getsentry/raven-go/.travis.yml @@ -1,26 +1,41 @@ sudo: false language: go go: - - "1.2" - - "1.3" - - 1.4.x - - 1.5.x - - 1.6.x - 1.7.x - 1.8.x - 1.9.x - 1.10.x + - 1.11.x - tip before_install: - go install -race std - go get golang.org/x/tools/cmd/cover + - go get github.com/tebeka/go2xunit + - go get github.com/t-yuki/gocover-cobertura - go get -v ./... script: - - go test -v -race ./... - - go test -v -cover ./... + - go test -v -race ./... | tee gotest.out + - $GOPATH/bin/go2xunit -fail -input gotest.out -output xunit.xml + - go test -v -coverprofile=coverage.txt -covermode count . + - $GOPATH/bin/gocover-cobertura < coverage.txt > coverage.xml + +after_script: + - npm install -g @zeus-ci/cli + - zeus upload -t "application/x-cobertura+xml" coverage.xml + - zeus upload -t "application/x-xunit+xml" xunit.xml matrix: allow_failures: - go: tip + +notifications: + webhooks: + urls: + - https://zeus.ci/hooks/cd949996-d30a-11e8-ba53-0a580a28042d/public/provider/travis/webhook + on_success: always + on_failure: always + on_start: always + on_cancel: always + on_error: always diff --git a/openstack-seeder/vendor/github.com/getsentry/raven-go/README.md b/openstack-seeder/vendor/github.com/getsentry/raven-go/README.md index 5ea29a0a0..16c9483e8 100644 --- a/openstack-seeder/vendor/github.com/getsentry/raven-go/README.md +++ b/openstack-seeder/vendor/github.com/getsentry/raven-go/README.md @@ -1,6 +1,10 @@ -# raven [![Build Status](https://travis-ci.org/getsentry/raven-go.png?branch=master)](https://travis-ci.org/getsentry/raven-go) +# raven -raven is a Go client for the [Sentry](https://github.com/getsentry/sentry) +[![Build Status](https://api.travis-ci.org/getsentry/raven-go.svg?branch=master)](https://travis-ci.org/getsentry/raven-go) +[![Go Report Card](https://goreportcard.com/badge/github.com/getsentry/raven-go)](https://goreportcard.com/report/github.com/getsentry/raven-go) +[![GoDoc](https://godoc.org/github.com/getsentry/raven-go?status.svg)](https://godoc.org/github.com/getsentry/raven-go) + +raven is the official Go SDK for the [Sentry](https://github.com/getsentry/sentry) event/error logging system. - [**API Documentation**](https://godoc.org/github.com/getsentry/raven-go) @@ -11,3 +15,5 @@ event/error logging system. ```text go get github.com/getsentry/raven-go ``` + +Note: Go 1.7 and newer are supported. diff --git a/openstack-seeder/vendor/github.com/getsentry/raven-go/client.go b/openstack-seeder/vendor/github.com/getsentry/raven-go/client.go index e224aa1ae..a2c9a6c35 100644 --- a/openstack-seeder/vendor/github.com/getsentry/raven-go/client.go +++ b/openstack-seeder/vendor/github.com/getsentry/raven-go/client.go @@ -945,7 +945,7 @@ func (t *HTTPTransport) Send(url, authHeader string, packet *Packet) error { io.Copy(ioutil.Discard, res.Body) res.Body.Close() if res.StatusCode != 200 { - return fmt.Errorf("raven: got http status %d", res.StatusCode) + return fmt.Errorf("raven: got http status %d - x-sentry-error: %s", res.StatusCode, res.Header.Get("X-Sentry-Error")) } return nil } diff --git a/openstack-seeder/vendor/github.com/getsentry/raven-go/http.go b/openstack-seeder/vendor/github.com/getsentry/raven-go/http.go index d5cb05a69..ae8f47234 100644 --- a/openstack-seeder/vendor/github.com/getsentry/raven-go/http.go +++ b/openstack-seeder/vendor/github.com/getsentry/raven-go/http.go @@ -69,17 +69,31 @@ func (h *Http) Class() string { return "request" } // ... // })) func RecoveryHandler(handler func(http.ResponseWriter, *http.Request)) func(http.ResponseWriter, *http.Request) { - return func(w http.ResponseWriter, r *http.Request) { + return Recoverer(http.HandlerFunc(handler)).ServeHTTP +} + +// Recovery handler to wrap the stdlib net/http Mux. +// Example: +// mux := http.NewServeMux +// ... +// http.Handle("/", raven.Recoverer(mux)) +func Recoverer(handler http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { defer func() { if rval := recover(); rval != nil { debug.PrintStack() rvalStr := fmt.Sprint(rval) - packet := NewPacket(rvalStr, NewException(errors.New(rvalStr), GetOrNewStacktrace(rval.(error), 2, 3, nil)), NewHttp(r)) + var packet *Packet + if err, ok := rval.(error); ok { + packet = NewPacket(rvalStr, NewException(errors.New(rvalStr), GetOrNewStacktrace(err, 2, 3, nil)), NewHttp(r)) + } else { + packet = NewPacket(rvalStr, NewException(errors.New(rvalStr), NewStacktrace(2, 3, nil)), NewHttp(r)) + } Capture(packet, nil) w.WriteHeader(http.StatusInternalServerError) } }() - handler(w, r) - } + handler.ServeHTTP(w, r) + }) } diff --git a/openstack-seeder/vendor/github.com/getsentry/raven-go/stacktrace.go b/openstack-seeder/vendor/github.com/getsentry/raven-go/stacktrace.go index fe46bf660..bc302ba11 100644 --- a/openstack-seeder/vendor/github.com/getsentry/raven-go/stacktrace.go +++ b/openstack-seeder/vendor/github.com/getsentry/raven-go/stacktrace.go @@ -61,14 +61,17 @@ func GetOrNewStacktrace(err error, skip int, context int, appPackagePrefixes []s for _, f := range stacktracer.StackTrace() { pc := uintptr(f) - 1 fn := runtime.FuncForPC(pc) + var fName string var file string var line int if fn != nil { file, line = fn.FileLine(pc) + fName = fn.Name() } else { file = "unknown" + fName = "unknown" } - frame := NewStacktraceFrame(pc, file, line, context, appPackagePrefixes) + frame := NewStacktraceFrame(pc, fName, file, line, context, appPackagePrefixes) if frame != nil { frames = append([]*StacktraceFrame{frame}, frames...) } @@ -89,14 +92,27 @@ func GetOrNewStacktrace(err error, skip int, context int, appPackagePrefixes []s // be considered "in app". func NewStacktrace(skip int, context int, appPackagePrefixes []string) *Stacktrace { var frames []*StacktraceFrame - for i := 1 + skip; ; i++ { - pc, file, line, ok := runtime.Caller(i) - if !ok { - break + + callerPcs := make([]uintptr, 100) + numCallers := runtime.Callers(skip+2, callerPcs) + + // If there are no callers, the entire stacktrace is nil + if numCallers == 0 { + return nil + } + + callersFrames := runtime.CallersFrames(callerPcs) + + for { + fr, more := callersFrames.Next() + if fr.Func != nil { + frame := NewStacktraceFrame(fr.PC, fr.Function, fr.File, fr.Line, context, appPackagePrefixes) + if frame != nil { + frames = append(frames, frame) + } } - frame := NewStacktraceFrame(pc, file, line, context, appPackagePrefixes) - if frame != nil { - frames = append(frames, frame) + if !more { + break } } // If there are no frames, the entire stacktrace is nil @@ -122,9 +138,9 @@ func NewStacktrace(skip int, context int, appPackagePrefixes []string) *Stacktra // // appPackagePrefixes is a list of prefixes used to check whether a package should // be considered "in app". -func NewStacktraceFrame(pc uintptr, file string, line, context int, appPackagePrefixes []string) *StacktraceFrame { +func NewStacktraceFrame(pc uintptr, fName, file string, line, context int, appPackagePrefixes []string) *StacktraceFrame { frame := &StacktraceFrame{AbsolutePath: file, Filename: trimPath(file), Lineno: line, InApp: false} - frame.Module, frame.Function = functionName(pc) + frame.Module, frame.Function = functionName(fName) // `runtime.goexit` is effectively a placeholder that comes from // runtime/asm_amd64.s and is meaningless. @@ -143,7 +159,7 @@ func NewStacktraceFrame(pc uintptr, file string, line, context int, appPackagePr } if context > 0 { - contextLines, lineIdx := fileContext(file, line, context) + contextLines, lineIdx := sourceCodeLoader.Load(file, line, context) if len(contextLines) > 0 { for i, line := range contextLines { switch { @@ -157,7 +173,7 @@ func NewStacktraceFrame(pc uintptr, file string, line, context int, appPackagePr } } } else if context == -1 { - contextLine, _ := fileContext(file, line, 0) + contextLine, _ := sourceCodeLoader.Load(file, line, 0) if len(contextLine) > 0 { frame.ContextLine = string(contextLine[0]) } @@ -166,12 +182,8 @@ func NewStacktraceFrame(pc uintptr, file string, line, context int, appPackagePr } // Retrieve the name of the package and function containing the PC. -func functionName(pc uintptr) (pack string, name string) { - fn := runtime.FuncForPC(pc) - if fn == nil { - return - } - name = fn.Name() +func functionName(fName string) (pack string, name string) { + name = fName // We get this: // runtime/debug.*T·ptrmethod // and want this: @@ -185,24 +197,36 @@ func functionName(pc uintptr) (pack string, name string) { return } -var fileCacheLock sync.Mutex -var fileCache = make(map[string][][]byte) +type SourceCodeLoader interface { + Load(filename string, line, context int) ([][]byte, int) +} + +var sourceCodeLoader SourceCodeLoader = &fsLoader{cache: make(map[string][][]byte)} + +func SetSourceCodeLoader(loader SourceCodeLoader) { + sourceCodeLoader = loader +} + +type fsLoader struct { + mu sync.Mutex + cache map[string][][]byte +} -func fileContext(filename string, line, context int) ([][]byte, int) { - fileCacheLock.Lock() - defer fileCacheLock.Unlock() - lines, ok := fileCache[filename] +func (fs *fsLoader) Load(filename string, line, context int) ([][]byte, int) { + fs.mu.Lock() + defer fs.mu.Unlock() + lines, ok := fs.cache[filename] if !ok { data, err := ioutil.ReadFile(filename) if err != nil { // cache errors as nil slice: code below handles it correctly // otherwise when missing the source or running as a different user, we try // reading the file on each error which is unnecessary - fileCache[filename] = nil + fs.cache[filename] = nil return nil, 0 } lines = bytes.Split(data, []byte{'\n'}) - fileCache[filename] = lines + fs.cache[filename] = lines } if lines == nil { diff --git a/openstack-seeder/vendor/modules.txt b/openstack-seeder/vendor/modules.txt index b14147826..be14895d6 100644 --- a/openstack-seeder/vendor/modules.txt +++ b/openstack-seeder/vendor/modules.txt @@ -23,7 +23,7 @@ github.com/emicklei/go-restful/log # github.com/emicklei/go-restful-swagger12 v0.0.0-20170208215640-dcef7f557305 ## explicit github.com/emicklei/go-restful-swagger12 -# github.com/getsentry/raven-go v0.0.0-20180517221441-ed7bcb39ff10 +# github.com/getsentry/raven-go v0.2.0 ## explicit github.com/getsentry/raven-go # github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680