diff --git a/internal/bridge/user_events.go b/internal/bridge/user_events.go index db133080..ddf78f95 100644 --- a/internal/bridge/user_events.go +++ b/internal/bridge/user_events.go @@ -148,7 +148,7 @@ func (bridge *Bridge) handleUserBadEvent(_ context.Context, user *user.User, eve "new_event_id": event.NewEventID, "event_info": event.EventInfo, "error": event.Error, - "error_type": fmt.Sprintf("%T", internal.ErrCause(event.Error)), + "error_type": internal.ErrCauseType(event.Error), }); rerr != nil { logrus.WithError(rerr).Error("Failed to report failed event handling") } @@ -164,7 +164,7 @@ func (bridge *Bridge) handleUserBadEvent(_ context.Context, user *user.User, eve func (bridge *Bridge) handleUncategorizedErrorEvent(event events.UncategorizedEventError) { if rerr := bridge.reporter.ReportMessageWithContext("Failed to handle due to uncategorized error", reporter.Context{ - "error_type": fmt.Sprintf("%T", internal.ErrCause(event.Error)), + "error_type": internal.ErrCauseType(event.Error), "error": event.Error, }); rerr != nil { logrus.WithError(rerr).Error("Failed to report failed event handling") diff --git a/internal/errors.go b/internal/errors.go index f8e839a6..714fcfdd 100644 --- a/internal/errors.go +++ b/internal/errors.go @@ -17,7 +17,10 @@ package internal -import "errors" +import ( + "errors" + "fmt" +) // ErrCause returns the cause of the error, the inner-most error in the wrapped chain. func ErrCause(err error) error { @@ -29,3 +32,7 @@ func ErrCause(err error) error { return cause } + +func ErrCauseType(err error) string { + return fmt.Sprintf("%T", ErrCause(err)) +} diff --git a/internal/user/events.go b/internal/user/events.go index c07c5eb1..a7aa2c23 100644 --- a/internal/user/events.go +++ b/internal/user/events.go @@ -29,6 +29,7 @@ import ( "github.com/ProtonMail/gluon/reporter" "github.com/ProtonMail/go-proton-api" "github.com/ProtonMail/gopenpgp/v2/crypto" + "github.com/ProtonMail/proton-bridge/v3/internal" "github.com/ProtonMail/proton-bridge/v3/internal/events" "github.com/ProtonMail/proton-bridge/v3/internal/logging" "github.com/ProtonMail/proton-bridge/v3/internal/safe" @@ -677,6 +678,7 @@ func (user *User) reportErrorAndMessageID(title string, err error, messgeID stri func (user *User) reportErrorNoContextCancel(title string, err error, reportContext reporter.Context) { if !errors.Is(err, context.Canceled) { reportContext["error"] = err + reportContext["error_type"] = internal.ErrCauseType(err) if rerr := user.reporter.ReportMessageWithContext(title, reportContext); rerr != nil { user.log.WithError(err).WithField("title", title).Error("Failed to report message") }