aboutsummaryrefslogtreecommitdiff
path: root/roomserver/internal/input
diff options
context:
space:
mode:
authorTill <2353100+S7evinK@users.noreply.github.com>2024-01-24 19:24:04 +0100
committerGitHub <noreply@github.com>2024-01-24 19:24:04 +0100
commitd58daf96655d8533c40be674fd11b74c38f40999 (patch)
treebc255d58745ccccba2e714ab74404f8dc0181daf /roomserver/internal/input
parent8e4dc6b4ae2e6b1ac8f62da2ba72deb282fb89b0 (diff)
Update sentry reporting (#3305)
This hopefully reduces the garbage we currently produce. (Using [GlitchTip](https://glitchtip.com/) on my personal instance, this seems to look better)
Diffstat (limited to 'roomserver/internal/input')
-rw-r--r--roomserver/internal/input/input.go16
-rw-r--r--roomserver/internal/input/input_latest_events.go1
2 files changed, 10 insertions, 7 deletions
diff --git a/roomserver/internal/input/input.go b/roomserver/internal/input/input.go
index 20d2cfc7..104ce94e 100644
--- a/roomserver/internal/input/input.go
+++ b/roomserver/internal/input/input.go
@@ -108,12 +108,14 @@ type worker struct {
r *Inputer
roomID string
subscription *nats.Subscription
+ sentryHub *sentry.Hub
}
func (r *Inputer) startWorkerForRoom(roomID string) {
v, loaded := r.workers.LoadOrStore(roomID, &worker{
- r: r,
- roomID: roomID,
+ r: r,
+ roomID: roomID,
+ sentryHub: sentry.CurrentHub().Clone(),
})
w := v.(*worker)
w.Lock()
@@ -265,9 +267,9 @@ func (w *worker) _next() {
// Look up what the next event is that's waiting to be processed.
ctx, cancel := context.WithTimeout(w.r.ProcessContext.Context(), time.Minute)
defer cancel()
- if scope := sentry.CurrentHub().Scope(); scope != nil {
+ w.sentryHub.ConfigureScope(func(scope *sentry.Scope) {
scope.SetTag("room_id", w.roomID)
- }
+ })
msgs, err := w.subscription.Fetch(1, nats.Context(ctx))
switch err {
case nil:
@@ -323,9 +325,9 @@ func (w *worker) _next() {
return
}
- if scope := sentry.CurrentHub().Scope(); scope != nil {
+ w.sentryHub.ConfigureScope(func(scope *sentry.Scope) {
scope.SetTag("event_id", inputRoomEvent.Event.EventID())
- }
+ })
// Process the room event. If something goes wrong then we'll tell
// NATS to terminate the message. We'll store the error result as
@@ -347,7 +349,7 @@ func (w *worker) _next() {
}).Warn("Roomserver rejected event")
default:
if !errors.Is(err, context.DeadlineExceeded) && !errors.Is(err, context.Canceled) {
- sentry.CaptureException(err)
+ w.sentryHub.CaptureException(err)
}
logrus.WithError(err).WithFields(logrus.Fields{
"room_id": w.roomID,
diff --git a/roomserver/internal/input/input_latest_events.go b/roomserver/internal/input/input_latest_events.go
index ec03d6f1..e9856cc5 100644
--- a/roomserver/internal/input/input_latest_events.go
+++ b/roomserver/internal/input/input_latest_events.go
@@ -298,6 +298,7 @@ func (u *latestEventsUpdater) latestState() error {
}).Warnf("State reset detected (removing %d events)", removed)
sentry.WithScope(func(scope *sentry.Scope) {
scope.SetLevel("warning")
+ scope.SetTag("room_id", u.event.RoomID().String())
scope.SetContext("State reset", map[string]interface{}{
"Event ID": u.event.EventID(),
"Old state NID": fmt.Sprintf("%d", u.oldStateNID),