chore(GODT-2444): Bad event info

This commit is contained in:
James Houlahan 2023-03-02 14:10:23 +01:00
parent 53d5619c51
commit 04a7a81e27
3 changed files with 27 additions and 9 deletions

View File

@ -56,7 +56,7 @@ func (bridge *Bridge) handleUserEvent(ctx context.Context, user *user.User, even
bridge.handleUserDeauth(ctx, user)
case events.UserBadEvent:
bridge.handleUserBadEvent(ctx, user, event.Error)
bridge.handleUserBadEvent(ctx, user, event)
case events.UncategorizedEventError:
bridge.handleUncategorizedErrorEvent(event)
@ -140,11 +140,15 @@ func (bridge *Bridge) handleUserDeauth(ctx context.Context, user *user.User) {
}, bridge.usersLock)
}
func (bridge *Bridge) handleUserBadEvent(ctx context.Context, user *user.User, err error) {
func (bridge *Bridge) handleUserBadEvent(ctx context.Context, user *user.User, event events.UserBadEvent) {
safe.Lock(func() {
if rerr := bridge.reporter.ReportMessageWithContext("Failed to handle event", reporter.Context{
"error_type": fmt.Sprintf("%T", internal.ErrCause(err)),
"error": err,
"user_id": user.ID(),
"old_event_id": event.OldEventID,
"new_event_id": event.NewEventID,
"event_info": event.EventInfo,
"error": event.Error,
"error_type": fmt.Sprintf("%T", internal.ErrCause(event.Error)),
}); rerr != nil {
logrus.WithError(rerr).Error("Failed to report failed event handling")
}

View File

@ -103,12 +103,23 @@ func (event UserDeauth) String() string {
type UserBadEvent struct {
eventBase
UserID string
Error error
UserID string
OldEventID string
NewEventID string
EventInfo string
Error error
}
func (event UserBadEvent) String() string {
return fmt.Sprintf("UserBadEvent: UserID: %s, Error: %s", event.UserID, event.Error)
return fmt.Sprintf(
"UserBadEvent: UserID: %s, OldEventID: %s, NewEventID: %s, EventInfo: %v, Error: %s",
event.UserID,
event.OldEventID,
event.NewEventID,
event.EventInfo,
event.Error,
)
}
// UserDeleted is emitted when a user has been deleted.

View File

@ -693,8 +693,11 @@ func (user *User) doEventPoll(ctx context.Context) error {
user.log.WithField("event", event).Warn("Failed to handle API event")
user.eventCh.Enqueue(events.UserBadEvent{
UserID: user.ID(),
Error: err,
UserID: user.ID(),
OldEventID: user.vault.EventID(),
NewEventID: event.EventID,
EventInfo: event.String(),
Error: err,
})
return fmt.Errorf("failed to handle event due to client error: %w", err)