diff --git a/cmd/cli/command/app/run.go b/cmd/cli/command/app/run.go index 903ec09..0058c5e 100644 --- a/cmd/cli/command/app/run.go +++ b/cmd/cli/command/app/run.go @@ -160,7 +160,7 @@ func RunCommand() *cli.Command { appCtx := logger.With(cmdCtx, logger.F("address", address)) if err := runApp(appCtx, path, address, documentstoreDSN, blobstoreDSN, shareStoreDSN, accountsFile, appsRepository); err != nil { - logger.Error(appCtx, "could not run app", logger.E(errors.WithStack(err))) + logger.Error(appCtx, "could not run app", logger.CapturedE(errors.WithStack(err))) } }(p, port, idx) } @@ -354,7 +354,7 @@ func findMatchingDeviceAddress(ctx context.Context, from string, defaultAddr str if err != nil { logger.Error( ctx, "could not retrieve iface adresses", - logger.E(errors.WithStack(err)), logger.F("iface", ifa.Name), + logger.CapturedE(errors.WithStack(err)), logger.F("iface", ifa.Name), ) continue @@ -365,7 +365,7 @@ func findMatchingDeviceAddress(ctx context.Context, from string, defaultAddr str if err != nil { logger.Error( ctx, "could not parse address", - logger.E(errors.WithStack(err)), logger.F("address", addr.String()), + logger.CapturedE(errors.WithStack(err)), logger.F("address", addr.String()), ) continue diff --git a/cmd/storage-server/command/run.go b/cmd/storage-server/command/run.go index a9f9e25..d954f6e 100644 --- a/cmd/storage-server/command/run.go +++ b/cmd/storage-server/command/run.go @@ -4,10 +4,12 @@ import ( "context" "fmt" "net/http" + "os" "strings" "sync" "time" + "github.com/getsentry/sentry-go" "github.com/hashicorp/golang-lru/v2/expirable" "github.com/keegancsmith/rpc" "github.com/lestrrat-go/jwx/v2/jwa" @@ -61,6 +63,16 @@ func Run() *cli.Command { EnvVars: []string{"STORAGE_SERVER_SHARESTORE_DSN_PATTERN"}, Value: fmt.Sprintf("sqlite://data/%%TENANT%%/sharestore.sqlite?_pragma=foreign_keys(1)&_pragma=busy_timeout=%d", (60 * time.Second).Milliseconds()), }, + &cli.StringFlag{ + Name: "sentry-dsn", + EnvVars: []string{"STORAGE_SERVER_SENTRY_DSN"}, + Value: "", + }, + &cli.StringFlag{ + Name: "sentry-environment", + EnvVars: []string{"STORAGE_SERVER_SENTRY_ENVIRONMENT"}, + Value: "", + }, flag.PrivateKey, flag.PrivateKeySigningAlgorithm, flag.PrivateKeyDefaultSize, @@ -89,6 +101,30 @@ func Run() *cli.Command { logger.SetLevel(logger.Level(logLevel)) + sentryDSN := ctx.String("sentry-dsn") + sentryEnvironment := ctx.String("sentry-environment") + if sentryDSN != "" { + if sentryEnvironment == "" { + sentryEnvironment, _ = os.Hostname() + } + + err := sentry.Init(sentry.ClientOptions{ + Dsn: sentryDSN, + Debug: logLevel == int(logger.LevelDebug), + AttachStacktrace: true, + Environment: sentryEnvironment, + }) + if err != nil { + logger.Error(ctx.Context, "could not initialize sentry", logger.CapturedE(errors.WithStack(err))) + } + + logger.SetCaptureFunc(func(err error) { + sentry.CaptureException(err) + }) + + defer sentry.Flush(2 * time.Second) + } + router := chi.NewRouter() privateKey, err := jwtutil.LoadOrGenerateKey( @@ -204,7 +240,7 @@ func createStoreHandler(getStoreServer getRPCServerFunc, dsnPattern string, appI server, err := getStoreServer(cacheSize, cacheTTL, tenant, appID, dsnPattern) if err != nil { - logger.Error(r.Context(), "could not retrieve store server", logger.E(errors.WithStack(err)), logger.F("tenant", tenant)) + logger.Error(r.Context(), "could not retrieve store server", logger.CapturedE(errors.WithStack(err)), logger.F("tenant", tenant)) http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) return @@ -245,7 +281,7 @@ func authenticate(privateKey jwk.Key, signingAlgorithm jwa.SignatureAlgorithm) f } }) if err != nil { - logger.Error(ctx, "could not create keyset accessor", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not create keyset accessor", logger.CapturedE(errors.WithStack(err))) http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) return @@ -255,7 +291,7 @@ func authenticate(privateKey jwk.Key, signingAlgorithm jwa.SignatureAlgorithm) f jwtutil.FindTokenFromQueryString("token"), )) if err != nil { - logger.Error(ctx, "could not find jwt token", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not find jwt token", logger.CapturedE(errors.WithStack(err))) http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized) return @@ -263,7 +299,7 @@ func authenticate(privateKey jwk.Key, signingAlgorithm jwa.SignatureAlgorithm) f tokenMap, err := token.AsMap(ctx) if err != nil { - logger.Error(ctx, "could not transform token to map", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not transform token to map", logger.CapturedE(errors.WithStack(err))) http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized) return diff --git a/go.mod b/go.mod index 1a9b4e1..1468140 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module forge.cadoles.com/arcad/edge go 1.19 require ( + github.com/getsentry/sentry-go v0.25.0 github.com/hashicorp/golang-lru/v2 v2.0.6 github.com/hashicorp/mdns v1.0.5 github.com/keegancsmith/rpc v1.3.0 @@ -13,11 +14,11 @@ require ( require ( cloud.google.com/go v0.75.0 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect - github.com/go-playground/locales v0.12.1 // indirect - github.com/go-playground/universal-translator v0.16.0 // indirect + github.com/go-playground/locales v0.14.0 // indirect + github.com/go-playground/universal-translator v0.18.0 // indirect github.com/goccy/go-json v0.9.11 // indirect github.com/gogo/protobuf v0.0.0-20161014173244-50d1bd39ce4e // indirect - github.com/leodido/go-urn v1.1.0 // indirect + github.com/leodido/go-urn v1.2.1 // indirect github.com/lestrrat-go/blackmagic v1.0.1 // indirect github.com/lestrrat-go/httpcc v1.0.1 // indirect github.com/lestrrat-go/httprc v1.0.4 // indirect @@ -49,8 +50,8 @@ require ( github.com/gorilla/websocket v1.4.2 // indirect github.com/igm/sockjs-go/v3 v3.0.2 github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect - github.com/mattn/go-colorable v0.1.4 // indirect - github.com/mattn/go-isatty v0.0.16 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.17 // indirect github.com/mitchellh/mapstructure v1.5.0 github.com/oklog/ulid/v2 v2.1.0 github.com/orcaman/concurrent-map v1.0.0 @@ -59,7 +60,7 @@ require ( github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/urfave/cli/v2 v2.24.3 github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect - gitlab.com/wpetit/goweb v0.0.0-20230419082146-a94d9ed7202b + gitlab.com/wpetit/goweb v0.0.0-20231019192040-4c72331a7648 go.opencensus.io v0.22.5 // indirect golang.org/x/crypto v0.7.0 golang.org/x/mod v0.10.0 diff --git a/go.sum b/go.sum index d01e884..5c26365 100644 --- a/go.sum +++ b/go.sum @@ -101,16 +101,19 @@ github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/gabriel-vasile/mimetype v1.4.1 h1:TRWk7se+TOjCYgRth7+1/OYLNiRNIotknkFtf/dnN7Q= github.com/gabriel-vasile/mimetype v1.4.1/go.mod h1:05Vi0w3Y9c/lNvJOdmIwvrrAhX3rYhfQQCaf9VJcv7M= +github.com/getsentry/sentry-go v0.25.0 h1:q6Eo+hS+yoJlTO3uu/azhQadsD8V+jQn2D8VvX1eOyI= +github.com/getsentry/sentry-go v0.25.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-chi/chi/v5 v5.0.8 h1:lD+NLqFcAi1ovnVZpsnObHGW4xb4J8lNmoYVfECH1Y0= github.com/go-chi/chi/v5 v5.0.8/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-playground/locales v0.12.1 h1:2FITxuFt/xuCNP1Acdhv62OzaCiviiE4kotfhkmOqEc= -github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= -github.com/go-playground/universal-translator v0.16.0 h1:X++omBR/4cE2MNg91AoC3rmGrCjJ8eAeUP/K/EKx4DM= -github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= +github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= +github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= +github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= +github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyLFfuisuzeidWPMPWmECqU= github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= @@ -143,8 +146,10 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -157,7 +162,9 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -172,7 +179,6 @@ github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -214,8 +220,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/leodido/go-urn v1.1.0 h1:Sm1gr51B1kKyfD2BlRcLSiEkffoG96g6TPv6eRoEiB8= -github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= +github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= github.com/lestrrat-go/blackmagic v1.0.1 h1:lS5Zts+5HIC/8og6cGHb0uCcNCa3OUt1ygh3Qz2Fe80= github.com/lestrrat-go/blackmagic v1.0.1/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU= github.com/lestrrat-go/httpcc v1.0.1 h1:ydWCStUeJLkpYyjLDHihupbn2tYmZ7m22BGkcvZZrIE= @@ -229,13 +235,15 @@ github.com/lestrrat-go/jwx/v2 v2.0.8/go.mod h1:zLxnyv9rTlEvOUHbc48FAfIL8iYu2hHvI github.com/lestrrat-go/option v1.0.0 h1:WqAWL8kh8VcSoD6xjSH34/1m8yxluXQbDeKNfvFeEO4= github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI= github.com/miekg/dns v0.0.0-20161006100029-fc4e1e2843d8/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= @@ -251,6 +259,8 @@ github.com/orcaman/concurrent-map v1.0.0 h1:I/2A2XPCb4IuQWcQhBhSwGfiuybl/J0ev9HD github.com/orcaman/concurrent-map v1.0.0/go.mod h1:Lu3tH6HLW3feq74c2GC+jIMS/K2CFcDWnWD9XkenwhI= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0= github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o= +github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -262,8 +272,9 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1: github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= @@ -279,8 +290,9 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli/v2 v2.24.3 h1:7Q1w8VN8yE0MJEHP06bv89PjYsN4IHWED2s1v/Zlfm0= github.com/urfave/cli/v2 v2.24.3/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= @@ -293,8 +305,8 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -gitlab.com/wpetit/goweb v0.0.0-20230419082146-a94d9ed7202b h1:nkvOl8TCj/mErADnwFFynjxBtC+hHsrESw6rw56JGmg= -gitlab.com/wpetit/goweb v0.0.0-20230419082146-a94d9ed7202b/go.mod h1:3sus4zjoUv1GB7eDLL60QaPkUnXJCWBpjvbe0jWifeY= +gitlab.com/wpetit/goweb v0.0.0-20231019192040-4c72331a7648 h1:t2UQmCmUoElIBBuVTqxqo8DcTJA/exQ/Q7XycfLqCZo= +gitlab.com/wpetit/goweb v0.0.0-20231019192040-4c72331a7648/go.mod h1:WdxGjM3HJWgBkUa4TwaTXUqY2BnRKlNSyUIv1aF4jxk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -345,6 +357,7 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20161013035702-8b4af36cd21a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -383,6 +396,8 @@ golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -405,6 +420,7 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181128092732-4ed8d59d0b35/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -446,11 +462,15 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ= golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -462,6 +482,8 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -512,6 +534,7 @@ golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.8.0 h1:vSDcovVPld282ceKgDimkRSC8kpaH1dgyc9UMzlt84Y= golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -605,8 +628,11 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.29.1 h1:7QBf+IK2gx70Ap/hDsOmam3GE0v9HicjfEdAxE62UoM= +google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= diff --git a/pkg/app/server.go b/pkg/app/server.go index c5f2fd7..7f2c08e 100644 --- a/pkg/app/server.go +++ b/pkg/app/server.go @@ -88,7 +88,7 @@ func (s *Server) Exec(ctx context.Context, callableOrFuncname any, args ...inter if recovered := recover(); recovered != nil { revoveredErr, ok := recovered.(error) if ok { - logger.Error(ctx, "recovered runtime error", logger.E(errors.WithStack(revoveredErr))) + logger.Error(ctx, "recovered runtime error", logger.CapturedE(errors.WithStack(revoveredErr))) err = errors.WithStack(ErrUnknownError) diff --git a/pkg/bundle/filesystem.go b/pkg/bundle/filesystem.go index bb3d8d7..ecfea3d 100644 --- a/pkg/bundle/filesystem.go +++ b/pkg/bundle/filesystem.go @@ -3,7 +3,7 @@ package bundle import ( "bytes" "context" - "io/ioutil" + "io" "net/http" "os" "path" @@ -40,8 +40,6 @@ func (fs *FileSystem) Open(name string) (http.File, error) { return nil, err } - logger.Error(ctx, "could not open bundle file", logger.E(err)) - return nil, errors.Wrapf(err, "could not open bundle file '%s'", p) } defer readCloser.Close() @@ -53,16 +51,14 @@ func (fs *FileSystem) Open(name string) (http.File, error) { if fileInfo.IsDir() { files, err := fs.bundle.Dir(p) if err != nil { - logger.Error(ctx, "could not read bundle directory", logger.E(err)) - return nil, errors.Wrapf(err, "could not read bundle directory '%s'", p) } file.files = files } else { - data, err := ioutil.ReadAll(readCloser) + data, err := io.ReadAll(readCloser) if err != nil { - logger.Error(ctx, "could not read bundle file", logger.E(err)) + logger.Error(ctx, "could not read bundle file", logger.CapturedE(errors.WithStack(err))) return nil, errors.Wrapf(err, "could not read bundle file '%s'", p) } diff --git a/pkg/bus/memory/event_dispatcher.go b/pkg/bus/memory/event_dispatcher.go index a424da3..2d60604 100644 --- a/pkg/bus/memory/event_dispatcher.go +++ b/pkg/bus/memory/event_dispatcher.go @@ -149,7 +149,7 @@ func (d *eventDispatcher) Run(ctx context.Context) { ctx, "message subscription context canceled", logger.F("message", msg), - logger.E(errors.WithStack(ctx.Err())), + logger.CapturedE(errors.WithStack(ctx.Err())), ) return diff --git a/pkg/http/blob.go b/pkg/http/blob.go index d58c5bd..d549393 100644 --- a/pkg/http/blob.go +++ b/pkg/http/blob.go @@ -39,7 +39,7 @@ func (h *Handler) handleAppUpload(w http.ResponseWriter, r *http.Request) { r.Body = http.MaxBytesReader(w, r.Body, h.uploadMaxFileSize) if err := r.ParseMultipartForm(h.uploadMaxFileSize); err != nil { - logger.Error(ctx, "could not parse multipart form", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not parse multipart form", logger.CapturedE(errors.WithStack(err))) jsonError(w, http.StatusBadRequest, errorCodeBadRequest) return @@ -47,7 +47,7 @@ func (h *Handler) handleAppUpload(w http.ResponseWriter, r *http.Request) { _, fileHeader, err := r.FormFile("file") if err != nil { - logger.Error(ctx, "could not read form file", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not read form file", logger.CapturedE(errors.WithStack(err))) jsonError(w, http.StatusBadRequest, errorCodeBadRequest) return @@ -58,7 +58,7 @@ func (h *Handler) handleAppUpload(w http.ResponseWriter, r *http.Request) { rawMetadata := r.Form.Get("metadata") if rawMetadata != "" { if err := json.Unmarshal([]byte(rawMetadata), &metadata); err != nil { - logger.Error(ctx, "could not parse metadata", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not parse metadata", logger.CapturedE(errors.WithStack(err))) jsonError(w, http.StatusBadRequest, errorCodeBadRequest) return @@ -73,7 +73,7 @@ func (h *Handler) handleAppUpload(w http.ResponseWriter, r *http.Request) { reply, err := h.bus.Request(ctx, requestMsg) if err != nil { - logger.Error(ctx, "could not retrieve file", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not retrieve file", logger.CapturedE(errors.WithStack(err))) jsonError(w, http.StatusInternalServerError, errorCodeInternalError) return @@ -125,7 +125,7 @@ func (h *Handler) handleAppDownload(w http.ResponseWriter, r *http.Request) { reply, err := h.bus.Request(ctx, requestMsg) if err != nil { - logger.Error(ctx, "could not retrieve file", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not retrieve file", logger.CapturedE(errors.WithStack(err))) http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) return @@ -135,7 +135,7 @@ func (h *Handler) handleAppDownload(w http.ResponseWriter, r *http.Request) { if !ok { logger.Error( ctx, "unexpected download response message", - logger.E(errors.WithStack(bus.ErrUnexpectedMessage)), + logger.CapturedE(errors.WithStack(bus.ErrUnexpectedMessage)), logger.F("message", reply), ) jsonError(w, http.StatusInternalServerError, errorCodeInternalError) @@ -157,7 +157,7 @@ func (h *Handler) handleAppDownload(w http.ResponseWriter, r *http.Request) { defer func() { if err := replyMsg.Blob.Close(); err != nil { - logger.Error(ctx, "could not close blob", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not close blob", logger.CapturedE(errors.WithStack(err))) } }() @@ -175,7 +175,7 @@ func serveFile(w http.ResponseWriter, r *http.Request, fs fs.FS, path string) { return } - logger.Error(ctx, "error while opening fs file", logger.E(errors.WithStack(err))) + logger.Error(ctx, "error while opening fs file", logger.CapturedE(errors.WithStack(err))) http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) return @@ -183,13 +183,13 @@ func serveFile(w http.ResponseWriter, r *http.Request, fs fs.FS, path string) { defer func() { if err := file.Close(); err != nil { - logger.Error(ctx, "error while closing fs file", logger.E(errors.WithStack(err))) + logger.Error(ctx, "error while closing fs file", logger.CapturedE(errors.WithStack(err))) } }() info, err := file.Stat() if err != nil { - logger.Error(ctx, "error while retrieving fs file stat", logger.E(errors.WithStack(err))) + logger.Error(ctx, "error while retrieving fs file stat", logger.CapturedE(errors.WithStack(err))) http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) return diff --git a/pkg/http/fetch.go b/pkg/http/fetch.go index 7d645bd..87c71e4 100644 --- a/pkg/http/fetch.go +++ b/pkg/http/fetch.go @@ -34,7 +34,7 @@ func (h *Handler) handleAppFetch(w http.ResponseWriter, r *http.Request) { reply, err := h.bus.Request(ctx, requestMsg) if err != nil { - logger.Error(ctx, "could not retrieve fetch request reply", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not retrieve fetch request reply", logger.CapturedE(errors.WithStack(err))) jsonError(w, http.StatusInternalServerError, errorCodeInternalError) return @@ -63,7 +63,7 @@ func (h *Handler) handleAppFetch(w http.ResponseWriter, r *http.Request) { if err != nil { logger.Error( ctx, "could not create proxy request", - logger.E(errors.WithStack(err)), + logger.CapturedE(errors.WithStack(err)), ) jsonError(w, http.StatusInternalServerError, errorCodeInternalError) @@ -82,7 +82,7 @@ func (h *Handler) handleAppFetch(w http.ResponseWriter, r *http.Request) { if err != nil { logger.Error( ctx, "could not execute proxy request", - logger.E(errors.WithStack(err)), + logger.CapturedE(errors.WithStack(err)), ) jsonError(w, http.StatusInternalServerError, errorCodeInternalError) @@ -93,7 +93,7 @@ func (h *Handler) handleAppFetch(w http.ResponseWriter, r *http.Request) { if err := res.Body.Close(); err != nil { logger.Error( ctx, "could not close response body", - logger.E(errors.WithStack(err)), + logger.CapturedE(errors.WithStack(err)), ) } }() diff --git a/pkg/http/html5_fileserver.go b/pkg/http/html5_fileserver.go index 136cc98..56a26db 100644 --- a/pkg/http/html5_fileserver.go +++ b/pkg/http/html5_fileserver.go @@ -31,7 +31,7 @@ func HTML5Fileserver(fs http.FileSystem) http.Handler { return } - logger.Error(r.Context(), "could not open bundle file", logger.E(err)) + logger.Error(r.Context(), "could not open bundle file", logger.CapturedE(err)) http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) return @@ -39,7 +39,7 @@ func HTML5Fileserver(fs http.FileSystem) http.Handler { defer func() { if err := file.Close(); err != nil { - logger.Error(r.Context(), "could not close file", logger.E(err)) + logger.Error(r.Context(), "could not close file", logger.CapturedE(err)) http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) diff --git a/pkg/http/sockjs.go b/pkg/http/sockjs.go index 4ce2bbf..57020e9 100644 --- a/pkg/http/sockjs.go +++ b/pkg/http/sockjs.go @@ -37,7 +37,7 @@ func (h *Handler) handleSockJSSession(sess sockjs.Session) { defer func() { if sess.GetSessionState() == sockjs.SessionActive { if err := sess.Close(statusChannelClosed, "channel closed"); err != nil { - logger.Error(ctx, "could not close sockjs session", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not close sockjs session", logger.CapturedE(errors.WithStack(err))) } } }() @@ -63,7 +63,7 @@ func (h *Handler) handleServerMessages(ctx context.Context, sess sockjs.Session) } if err := sess.Close(statusChannelClosed, "channel closed"); err != nil { - logger.Error(ctx, "could not close sockjs session", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not close sockjs session", logger.CapturedE(errors.WithStack(err))) } }() @@ -96,7 +96,7 @@ func (h *Handler) handleServerMessages(ctx context.Context, sess sockjs.Session) logger.Error( ctx, "could not encode message", - logger.E(err), + logger.CapturedE(errors.WithStack(err)), ) continue @@ -112,7 +112,7 @@ func (h *Handler) handleServerMessages(ctx context.Context, sess sockjs.Session) logger.Error( ctx, "could not encode message", - logger.E(err), + logger.CapturedE(errors.WithStack(err)), ) continue @@ -125,7 +125,7 @@ func (h *Handler) handleServerMessages(ctx context.Context, sess sockjs.Session) logger.Error( ctx, "could not send message", - logger.E(err), + logger.CapturedE(errors.WithStack(err)), ) } } @@ -152,7 +152,7 @@ func (h *Handler) handleClientMessages(ctx context.Context, sess sockjs.Session) logger.Error( ctx, "could not read message", - logger.E(errors.WithStack(err)), + logger.CapturedE(errors.WithStack(err)), ) break @@ -165,7 +165,7 @@ func (h *Handler) handleClientMessages(ctx context.Context, sess sockjs.Session) logger.Error( ctx, "could not decode message", - logger.E(errors.WithStack(err)), + logger.CapturedE(errors.WithStack(err)), ) break @@ -179,7 +179,7 @@ func (h *Handler) handleClientMessages(ctx context.Context, sess sockjs.Session) logger.Error( ctx, "could not decode payload", - logger.E(errors.WithStack(err)), + logger.CapturedE(errors.WithStack(err)), ) return @@ -197,7 +197,7 @@ func (h *Handler) handleClientMessages(ctx context.Context, sess sockjs.Session) if err := h.bus.Publish(ctx, clientMessage); err != nil { logger.Error(ctx, "could not publish message", - logger.E(errors.WithStack(err)), + logger.CapturedE(errors.WithStack(err)), logger.F("message", clientMessage), ) diff --git a/pkg/module/app/mount.go b/pkg/module/app/mount.go index 7637fab..d714705 100644 --- a/pkg/module/app/mount.go +++ b/pkg/module/app/mount.go @@ -20,7 +20,7 @@ type Handler struct { func (h *Handler) serveApps(w http.ResponseWriter, r *http.Request) { manifests, err := h.repo.List(r.Context()) if err != nil { - logger.Error(r.Context(), "could not retrieve app manifest", logger.E(errors.WithStack(err))) + logger.Error(r.Context(), "could not retrieve app manifest", logger.CapturedE(errors.WithStack(err))) api.ErrorResponse(w, http.StatusInternalServerError, api.ErrCodeUnknownError, nil) return @@ -44,7 +44,7 @@ func (h *Handler) serveApp(w http.ResponseWriter, r *http.Request) { return } - logger.Error(r.Context(), "could not retrieve app manifest", logger.E(errors.WithStack(err))) + logger.Error(r.Context(), "could not retrieve app manifest", logger.CapturedE(errors.WithStack(err))) api.ErrorResponse(w, http.StatusInternalServerError, api.ErrCodeUnknownError, nil) return @@ -84,7 +84,7 @@ func (h *Handler) serveAppURL(w http.ResponseWriter, r *http.Request) { return } - logger.Error(r.Context(), "could not retrieve app url", logger.E(errors.WithStack(err))) + logger.Error(r.Context(), "could not retrieve app url", logger.CapturedE(errors.WithStack(err))) api.ErrorResponse(w, http.StatusInternalServerError, api.ErrCodeUnknownError, nil) return diff --git a/pkg/module/auth/http/local_handler.go b/pkg/module/auth/http/local_handler.go index 91999a4..0228240 100644 --- a/pkg/module/auth/http/local_handler.go +++ b/pkg/module/auth/http/local_handler.go @@ -69,7 +69,7 @@ func (h *LocalHandler) serveForm(w http.ResponseWriter, r *http.Request) { } if err := loginTemplate.Execute(w, data); err != nil { - logger.Error(ctx, "could not execute login page template", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not execute login page template", logger.CapturedE(errors.WithStack(err))) } } @@ -77,7 +77,7 @@ func (h *LocalHandler) handleForm(w http.ResponseWriter, r *http.Request) { ctx := r.Context() if err := r.ParseForm(); err != nil { - logger.Error(ctx, "could not parse form", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not parse form", logger.CapturedE(errors.WithStack(err))) http.Error(w, http.StatusText(http.StatusBadRequest), http.StatusBadRequest) return @@ -99,13 +99,13 @@ func (h *LocalHandler) handleForm(w http.ResponseWriter, r *http.Request) { data.Message = "Invalid username or password." if err := loginTemplate.Execute(w, data); err != nil { - logger.Error(ctx, "could not execute login page template", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not execute login page template", logger.CapturedE(errors.WithStack(err))) } return } - logger.Error(ctx, "could not authenticate account", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not authenticate account", logger.CapturedE(errors.WithStack(err))) http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) return @@ -115,7 +115,7 @@ func (h *LocalHandler) handleForm(w http.ResponseWriter, r *http.Request) { token, err := jwtutil.SignedToken(h.key, h.signingAlgorithm, account.Claims) if err != nil { - logger.Error(ctx, "could not generate signed token", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not generate signed token", logger.CapturedE(errors.WithStack(err))) http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) return @@ -123,7 +123,7 @@ func (h *LocalHandler) handleForm(w http.ResponseWriter, r *http.Request) { cookieDomain, err := h.getCookieDomain(r) if err != nil { - logger.Error(ctx, "could not retrieve cookie domain", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not retrieve cookie domain", logger.CapturedE(errors.WithStack(err))) http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) return @@ -146,7 +146,7 @@ func (h *LocalHandler) handleForm(w http.ResponseWriter, r *http.Request) { func (h *LocalHandler) handleLogout(w http.ResponseWriter, r *http.Request) { cookieDomain, err := h.getCookieDomain(r) if err != nil { - logger.Error(r.Context(), "could not retrieve cookie domain", logger.E(errors.WithStack(err))) + logger.Error(r.Context(), "could not retrieve cookie domain", logger.CapturedE(errors.WithStack(err))) http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) return diff --git a/pkg/module/auth/middleware/anonymous_user.go b/pkg/module/auth/middleware/anonymous_user.go index 234372c..92caa3a 100644 --- a/pkg/module/auth/middleware/anonymous_user.go +++ b/pkg/module/auth/middleware/anonymous_user.go @@ -42,7 +42,7 @@ func AnonymousUser(key jwk.Key, signingAlgorithm jwa.SignatureAlgorithm, funcs . uuid, err := uuid.NewUUID() if err != nil { - logger.Error(ctx, "could not generate uuid for anonymous user", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not generate uuid for anonymous user", logger.CapturedE(errors.WithStack(err))) http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) return @@ -51,7 +51,7 @@ func AnonymousUser(key jwk.Key, signingAlgorithm jwa.SignatureAlgorithm, funcs . subject := fmt.Sprintf("%s-%s", AnonIssuer, uuid.String()) preferredUsername, err := generateRandomPreferredUsername(8) if err != nil { - logger.Error(ctx, "could not generate preferred username for anonymous user", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not generate preferred username for anonymous user", logger.CapturedE(errors.WithStack(err))) http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) return @@ -68,7 +68,7 @@ func AnonymousUser(key jwk.Key, signingAlgorithm jwa.SignatureAlgorithm, funcs . token, err := jwtutil.SignedToken(key, signingAlgorithm, claims) if err != nil { - logger.Error(ctx, "could not generate signed token", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not generate signed token", logger.CapturedE(errors.WithStack(err))) http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) return @@ -76,7 +76,7 @@ func AnonymousUser(key jwk.Key, signingAlgorithm jwa.SignatureAlgorithm, funcs . cookieDomain, err := opts.GetCookieDomain(r) if err != nil { - logger.Error(ctx, "could not retrieve cookie domain", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not retrieve cookie domain", logger.CapturedE(errors.WithStack(err))) http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) return diff --git a/pkg/module/auth/module.go b/pkg/module/auth/module.go index 90e2cb8..7732d01 100644 --- a/pkg/module/auth/module.go +++ b/pkg/module/auth/module.go @@ -79,7 +79,7 @@ func (m *Module) getClaim(call goja.FunctionCall, rt *goja.Runtime) goja.Value { return nil } - logger.Error(ctx, "could not retrieve claim", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not retrieve claim", logger.CapturedE(errors.WithStack(err))) return nil } diff --git a/pkg/module/auth/mount.go b/pkg/module/auth/mount.go index ea3cd3a..b4a4bde 100644 --- a/pkg/module/auth/mount.go +++ b/pkg/module/auth/mount.go @@ -35,7 +35,7 @@ func (h *Handler) serveProfile(w http.ResponseWriter, r *http.Request) { return } - logger.Error(ctx, "could not retrieve claims", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not retrieve claims", logger.CapturedE(errors.WithStack(err))) api.ErrorResponse( w, http.StatusInternalServerError, api.ErrCodeUnknownError, diff --git a/pkg/module/blob/module.go b/pkg/module/blob/module.go index a9c4b23..dedc245 100644 --- a/pkg/module/blob/module.go +++ b/pkg/module/blob/module.go @@ -95,7 +95,7 @@ func (m *Module) writeBlob(call goja.FunctionCall, rt *goja.Runtime) goja.Value defer func() { if err := bucket.Close(); err != nil { - logger.Error(ctx, "could not close bucket", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not close bucket", logger.CapturedE(errors.WithStack(err))) } }() @@ -106,7 +106,7 @@ func (m *Module) writeBlob(call goja.FunctionCall, rt *goja.Runtime) goja.Value defer func() { if err := writer.Close(); err != nil && !errors.Is(err, os.ErrClosed) { - logger.Error(ctx, "could not close blob writer", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not close blob writer", logger.CapturedE(errors.WithStack(err))) } }() @@ -129,7 +129,7 @@ func (m *Module) getBlobInfo(call goja.FunctionCall, rt *goja.Runtime) goja.Valu defer func() { if err := bucket.Close(); err != nil { - logger.Error(ctx, "could not close bucket", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not close bucket", logger.CapturedE(errors.WithStack(err))) } }() @@ -153,7 +153,7 @@ func (m *Module) readBlob(call goja.FunctionCall, rt *goja.Runtime) goja.Value { defer func() { if err := reader.Close(); err != nil && !errors.Is(err, os.ErrClosed) { - logger.Error(ctx, "could not close blob reader", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not close blob reader", logger.CapturedE(errors.WithStack(err))) } }() @@ -245,7 +245,7 @@ func (m *Module) handleMessages() { res, err := m.handleUploadRequest(uploadRequest) if err != nil { - logger.Error(ctx, "could not handle upload request", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not handle upload request", logger.CapturedE(errors.WithStack(err))) return nil, errors.WithStack(err) } @@ -267,7 +267,7 @@ func (m *Module) handleMessages() { res, err := m.handleDownloadRequest(downloadRequest) if err != nil { - logger.Error(ctx, "could not handle download request", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not handle download request", logger.CapturedE(errors.WithStack(err))) return nil, errors.WithStack(err) } @@ -354,7 +354,7 @@ func (m *Module) saveBlob(ctx context.Context, bucketName string, blobID storage defer func() { if err := file.Close(); err != nil { - logger.Error(ctx, "could not close file", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not close file", logger.CapturedE(errors.WithStack(err))) } }() @@ -365,7 +365,7 @@ func (m *Module) saveBlob(ctx context.Context, bucketName string, blobID storage defer func() { if err := bucket.Close(); err != nil { - logger.Error(ctx, "could not close bucket", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not close bucket", logger.CapturedE(errors.WithStack(err))) } }() @@ -376,13 +376,13 @@ func (m *Module) saveBlob(ctx context.Context, bucketName string, blobID storage defer func() { if err := file.Close(); err != nil { - logger.Error(ctx, "could not close file", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not close file", logger.CapturedE(errors.WithStack(err))) } }() defer func() { if err := writer.Close(); err != nil { - logger.Error(ctx, "could not close writer", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not close writer", logger.CapturedE(errors.WithStack(err))) } }() @@ -453,7 +453,7 @@ func (m *Module) openBlob(ctx context.Context, bucketName string, blobID storage defer func() { if err := bucket.Close(); err != nil { - logger.Error(ctx, "could not close bucket", logger.E(errors.WithStack(err)), logger.F("bucket", bucket)) + logger.Error(ctx, "could not close bucket", logger.CapturedE(errors.WithStack(err)), logger.F("bucket", bucket)) } }() diff --git a/pkg/module/cast/cast.go b/pkg/module/cast/cast.go index 5f70d55..49708ae 100644 --- a/pkg/module/cast/cast.go +++ b/pkg/module/cast/cast.go @@ -148,7 +148,7 @@ func SearchDevices(ctx context.Context) (chan Device, error) { defer searchDevicesMutex.Unlock() if err := service.Run(ctx, serviceDiscoveryPollingInterval); err != nil && !errors.Is(err, context.DeadlineExceeded) { - logger.Error(ctx, "error while running cast service discovery", logger.E(errors.WithStack(err))) + logger.Error(ctx, "error while running cast service discovery", logger.CapturedE(errors.WithStack(err))) } }() diff --git a/pkg/module/cast/discovery.go b/pkg/module/cast/discovery.go index 63e7e47..eca82b6 100644 --- a/pkg/module/cast/discovery.go +++ b/pkg/module/cast/discovery.go @@ -71,7 +71,7 @@ func (d *Service) Run(ctx context.Context, interval time.Duration) error { logger.Error( ctx, "could not poll interface", - logger.E(errors.WithStack(err)), logger.F("iface", iface.Name), + logger.CapturedE(errors.WithStack(err)), logger.F("iface", iface.Name), ) } }(pollCtx, iface) diff --git a/pkg/module/cast/module.go b/pkg/module/cast/module.go index 1344cac..e7c55b7 100644 --- a/pkg/module/cast/module.go +++ b/pkg/module/cast/module.go @@ -60,7 +60,7 @@ func (m *Module) refreshDevices(call goja.FunctionCall, rt *goja.Runtime) goja.V devices, err := ListDevices(ctx, true) if err != nil { err = errors.WithStack(err) - logger.Error(ctx, "error refreshing casting devices list", logger.E(errors.WithStack(err))) + logger.Error(ctx, "error refreshing casting devices list", logger.CapturedE(errors.WithStack(err))) promise.Reject(err) @@ -108,7 +108,7 @@ func (m *Module) loadUrl(call goja.FunctionCall, rt *goja.Runtime) goja.Value { err := LoadURL(ctx, deviceUUID, url) if err != nil { err = errors.WithStack(err) - logger.Error(ctx, "error while casting url", logger.E(err)) + logger.Error(ctx, "error while casting url", logger.CapturedE(err)) promise.Reject(err) @@ -143,7 +143,7 @@ func (m *Module) stopCast(call goja.FunctionCall, rt *goja.Runtime) goja.Value { err := StopCast(ctx, deviceUUID) if err != nil { err = errors.WithStack(err) - logger.Error(ctx, "error while quitting casting device app", logger.E(errors.WithStack(err))) + logger.Error(ctx, "error while quitting casting device app", logger.CapturedE(errors.WithStack(err))) promise.Reject(err) @@ -178,7 +178,7 @@ func (m *Module) getStatus(call goja.FunctionCall, rt *goja.Runtime) goja.Value status, err := getStatus(ctx, deviceUUID) if err != nil { err = errors.WithStack(err) - logger.Error(ctx, "error while getting casting device status", logger.E(err)) + logger.Error(ctx, "error while getting casting device status", logger.CapturedE(err)) promise.Reject(err) diff --git a/pkg/module/fetch/module.go b/pkg/module/fetch/module.go index fb1ed9b..fdc3930 100644 --- a/pkg/module/fetch/module.go +++ b/pkg/module/fetch/module.go @@ -48,7 +48,7 @@ func (m *Module) handleMessages() { res, err := m.handleFetchRequest(fetchRequest) if err != nil { - logger.Error(ctx, "could not handle fetch request", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not handle fetch request", logger.CapturedE(errors.WithStack(err))) return nil, errors.WithStack(err) } diff --git a/pkg/module/lifecycle.go b/pkg/module/lifecycle.go index 964433a..3e3b1b6 100644 --- a/pkg/module/lifecycle.go +++ b/pkg/module/lifecycle.go @@ -30,7 +30,7 @@ func (m *LifecycleModule) OnInit(ctx context.Context, rt *goja.Runtime) (err err if recovered := recover(); recovered != nil { revoveredErr, ok := recovered.(error) if ok { - logger.Error(ctx, "recovered runtime error", logger.E(errors.WithStack(revoveredErr))) + logger.Error(ctx, "recovered runtime error", logger.CapturedE(errors.WithStack(revoveredErr))) err = errors.WithStack(app.ErrUnknownError) diff --git a/pkg/module/net/module.go b/pkg/module/net/module.go index 7047b8e..542b666 100644 --- a/pkg/module/net/module.go +++ b/pkg/module/net/module.go @@ -138,7 +138,7 @@ func (m *Module) handleClientMessages() { logger.Error( ctx, "on client message error", - logger.E(err), + logger.CapturedE(errors.WithStack(err)), ) } } diff --git a/pkg/module/rpc.go b/pkg/module/rpc.go index 36694dc..5877ffb 100644 --- a/pkg/module/rpc.go +++ b/pkg/module/rpc.go @@ -113,7 +113,7 @@ func (m *RPCModule) handleMessages(ctx context.Context) { if err := m.sendResponse(ctx, res); err != nil { logger.Error( ctx, "could not send response", - logger.E(errors.WithStack(err)), + logger.CapturedE(errors.WithStack(err)), logger.F("response", res), logger.F("request", req), ) @@ -147,7 +147,7 @@ func (m *RPCModule) handleMessage(ctx context.Context, msg bus.Message, sendRes if err := m.sendMethodNotFoundResponse(clientMessage.Context, req); err != nil { logger.Error( ctx, "could not send method not found response", - logger.E(errors.WithStack(err)), + logger.CapturedE(errors.WithStack(err)), logger.F("request", req), ) } @@ -162,7 +162,7 @@ func (m *RPCModule) handleMessage(ctx context.Context, msg bus.Message, sendRes if err := m.sendMethodNotFoundResponse(clientMessage.Context, req); err != nil { logger.Error( ctx, "could not send method not found response", - logger.E(errors.WithStack(err)), + logger.CapturedE(errors.WithStack(err)), logger.F("request", req), ) } @@ -174,14 +174,14 @@ func (m *RPCModule) handleMessage(ctx context.Context, msg bus.Message, sendRes if err != nil { logger.Error( ctx, "rpc call error", - logger.E(errors.WithStack(err)), + logger.CapturedE(errors.WithStack(err)), logger.F("request", req), ) if err := m.sendErrorResponse(clientMessage.Context, req, err); err != nil { logger.Error( ctx, "could not send error response", - logger.E(errors.WithStack(err)), + logger.CapturedE(errors.WithStack(err)), logger.F("originalError", err), logger.F("request", req), ) diff --git a/pkg/storage/driver/rpc/client/blob_store.go b/pkg/storage/driver/rpc/client/blob_store.go index cf31b04..ea3624f 100644 --- a/pkg/storage/driver/rpc/client/blob_store.go +++ b/pkg/storage/driver/rpc/client/blob_store.go @@ -83,7 +83,7 @@ func (s *BlobStore) withClient(ctx context.Context, fn func(ctx context.Context, defer func() { if err := client.Close(); err != nil { - logger.Error(ctx, "could not close rpc client", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not close rpc client", logger.CapturedE(errors.WithStack(err))) } }() diff --git a/pkg/storage/driver/rpc/client/document_store.go b/pkg/storage/driver/rpc/client/document_store.go index 46282f2..f1aaf45 100644 --- a/pkg/storage/driver/rpc/client/document_store.go +++ b/pkg/storage/driver/rpc/client/document_store.go @@ -116,7 +116,7 @@ func (s *DocumentStore) withClient(ctx context.Context, fn func(ctx context.Cont defer func() { if err := client.Close(); err != nil { - logger.Error(ctx, "could not close rpc client", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not close rpc client", logger.CapturedE(errors.WithStack(err))) } }() diff --git a/pkg/storage/driver/rpc/client/share_store.go b/pkg/storage/driver/rpc/client/share_store.go index 82954d2..276d617 100644 --- a/pkg/storage/driver/rpc/client/share_store.go +++ b/pkg/storage/driver/rpc/client/share_store.go @@ -132,7 +132,7 @@ func (s *ShareStore) withClient(ctx context.Context, fn func(ctx context.Context defer func() { if err := client.Close(); err != nil { - logger.Error(ctx, "could not close rpc client", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not close rpc client", logger.CapturedE(errors.WithStack(err))) } }() diff --git a/pkg/storage/driver/sqlite/blob_bucket.go b/pkg/storage/driver/sqlite/blob_bucket.go index a096dcc..db525b6 100644 --- a/pkg/storage/driver/sqlite/blob_bucket.go +++ b/pkg/storage/driver/sqlite/blob_bucket.go @@ -153,7 +153,7 @@ func (b *BlobBucket) List(ctx context.Context) ([]storage.BlobInfo, error) { defer func() { if err := rows.Close(); err != nil { - logger.Error(ctx, "could not close rows", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not close rows", logger.CapturedE(errors.WithStack(err))) } }() diff --git a/pkg/storage/driver/sqlite/blob_store.go b/pkg/storage/driver/sqlite/blob_store.go index 4b59423..1e43304 100644 --- a/pkg/storage/driver/sqlite/blob_store.go +++ b/pkg/storage/driver/sqlite/blob_store.go @@ -44,7 +44,7 @@ func (s *BlobStore) ListBuckets(ctx context.Context) ([]string, error) { defer func() { if err := rows.Close(); err != nil { - logger.Error(ctx, "could not close rows", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not close rows", logger.CapturedE(errors.WithStack(err))) } }() diff --git a/pkg/storage/driver/sqlite/document_store.go b/pkg/storage/driver/sqlite/document_store.go index 6f6f3e5..2166ee1 100644 --- a/pkg/storage/driver/sqlite/document_store.go +++ b/pkg/storage/driver/sqlite/document_store.go @@ -162,7 +162,7 @@ func (s *DocumentStore) Query(ctx context.Context, collection string, filter *fi defer func() { if err := rows.Close(); err != nil { - logger.Error(ctx, "could not close rows", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not close rows", logger.CapturedE(errors.WithStack(err))) } }() diff --git a/pkg/storage/driver/sqlite/share_store.go b/pkg/storage/driver/sqlite/share_store.go index 8a38838..ee1567f 100644 --- a/pkg/storage/driver/sqlite/share_store.go +++ b/pkg/storage/driver/sqlite/share_store.go @@ -162,7 +162,7 @@ func (s *ShareStore) FindResources(ctx context.Context, funcs ...share.FindResou defer func() { if err := rows.Close(); err != nil { - logger.Error(ctx, "could not close rows", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not close rows", logger.CapturedE(errors.WithStack(err))) } }() @@ -264,7 +264,7 @@ func (s *ShareStore) UpdateAttributes(ctx context.Context, origin app.ID, resour defer func() { if err := stmt.Close(); err != nil { - logger.Error(ctx, "could not close statement", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not close statement", logger.CapturedE(errors.WithStack(err))) } }() @@ -316,7 +316,7 @@ func (s *ShareStore) getResourceWithinTx(ctx context.Context, tx *sql.Tx, origin defer func() { if err := rows.Close(); err != nil { - logger.Error(ctx, "could not close rows", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not close rows", logger.CapturedE(errors.WithStack(err))) } }() diff --git a/pkg/storage/driver/sqlite/sql.go b/pkg/storage/driver/sqlite/sql.go index 08cb627..3a28caa 100644 --- a/pkg/storage/driver/sqlite/sql.go +++ b/pkg/storage/driver/sqlite/sql.go @@ -48,7 +48,7 @@ func WithTx(ctx context.Context, db *sql.DB, fn func(tx *sql.Tx) error) error { logger.Warn(ctx, "database busy, retrying transaction") if err := ctx.Err(); err != nil { - logger.Error(ctx, "could not execute transaction", logger.E(errors.WithStack(err))) + logger.Error(ctx, "could not execute transaction", logger.CapturedE(errors.WithStack(err))) return errors.WithStack(err) }