diff options
| author | Michael Matloob <matloob@golang.org> | 2023-07-31 20:33:59 -0400 |
|---|---|---|
| committer | Michael Matloob <matloob@golang.org> | 2023-08-04 21:05:17 +0000 |
| commit | 52eb2284cdc61553bdf91183f1b28a6a72b7179b (patch) | |
| tree | 872b3e1f2bc6e3d55cb87c37400bd23a002474a1 /cmd/internal | |
| parent | 1e9399879d1c0342761bfc4c0b42482de392e741 (diff) | |
| download | go-x-pkgsite-52eb2284cdc61553bdf91183f1b28a6a72b7179b.tar.xz | |
internal/frontend: remove dependency on cloud error reporting client
This removes the dependency of internal/frontend on the cloud error
reporting client, both directly, and through the derrors package by
introducing a new interface Reporter that is used both to set the
reporting client for internal/derrors, and on the Server.
For golang/go#61399
Change-Id: Id4d4def522cda9b4e49f53cff6708019dec2693c
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/514676
Reviewed-by: Jamal Carvalho <jamal@golang.org>
kokoro-CI: kokoro <noreply+kokoro@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Michael Matloob <matloob@golang.org>
Diffstat (limited to 'cmd/internal')
| -rw-r--r-- | cmd/internal/cmdconfig/cmdconfig.go | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/cmd/internal/cmdconfig/cmdconfig.go b/cmd/internal/cmdconfig/cmdconfig.go index 8d1ec831..f26ceb7e 100644 --- a/cmd/internal/cmdconfig/cmdconfig.go +++ b/cmd/internal/cmdconfig/cmdconfig.go @@ -8,6 +8,7 @@ package cmdconfig import ( "context" "fmt" + "net/http" "strings" "time" @@ -44,12 +45,12 @@ func Logger(ctx context.Context, cfg *config.Config, logName string) middleware. return middleware.LocalLogger{} } -// ReportingClient configures an Error Reporting client. -func ReportingClient(ctx context.Context, cfg *config.Config) *errorreporting.Client { +// Reporter configures an Error Reporting client. +func Reporter(ctx context.Context, cfg *config.Config) derrors.Reporter { if !cfg.OnGCP() || cfg.DisableErrorReporting { return nil } - reporter, err := errorreporting.NewClient(ctx, cfg.ProjectID, errorreporting.Config{ + reportingClient, err := errorreporting.NewClient(ctx, cfg.ProjectID, errorreporting.Config{ ServiceName: cfg.ServiceID, OnError: func(err error) { log.Errorf(ctx, "Error reporting failed: %v", err) @@ -58,13 +59,22 @@ func ReportingClient(ctx context.Context, cfg *config.Config) *errorreporting.Cl if err != nil { log.Fatal(ctx, err) } - derrors.SetReportingClient(reporter) + reporter := &reporter{reportingClient} + derrors.SetReporter(reporter) return reporter } +type reporter struct { + c *errorreporting.Client +} + +func (r *reporter) Report(err error, req *http.Request, stack []byte) { + r.c.Report(errorreporting.Entry{Error: err, Req: req, Stack: stack}) +} + // Experimenter configures a middleware.Experimenter. -func Experimenter(ctx context.Context, cfg *config.Config, getter middleware.ExperimentGetter, reportingClient *errorreporting.Client) *middleware.Experimenter { - e, err := middleware.NewExperimenter(ctx, 1*time.Minute, getter, reportingClient) +func Experimenter(ctx context.Context, cfg *config.Config, getter middleware.ExperimentGetter, reporter derrors.Reporter) *middleware.Experimenter { + e, err := middleware.NewExperimenter(ctx, 1*time.Minute, getter, reporter) if err != nil { log.Fatal(ctx, err) } |
