Hallo Julius,

uff, das war ein klassischer brown paperbag bug.

Um die Badges zu vergeben spawne ich einen Hintergrund-Prozess, der die Informationen zusammenträgt und prüft, ob der User einen neuen Badge bekommen soll. Ist das der Fall, benachrichtige ich den User darüber. Und genau hier lag das problem: für die Benachrichtigung ich starte eine Transaktion, trage den neuen Badge ein, trage die Benachrichtigung ein und starte dann den Job für die Benachrichtigungen an die Websockets. ActiveJob (das Rails-Framework für die Hintergrund-Jobs) versucht nun (über eine gesonderte Datenbank-Verbindung) die Notification zu serialisieren und den Job zu starten. Das schlägt fehl, weil die Notification nur innerhalb der Transaktion sichtbar ist. Und deshalb wird eine Exception geschmissen; und weil das eine RecordNotFoundException ist gibt es kein error reporting, sondern die Exception wird stillschweigend geschluckt und ein ROLLBACK wird veranlasst.

Doh!

Edit: tl;dr: geht wieder.

LG,
CK

-- https://wwwtech.de/about

Folgende Nachrichten verweisen auf diesen Beitrag:

freiwillige Angabe, für jeden sichtbar
freiwillige Angabe, für jeden sichtbar
freiwillige Angabe, für jeden sichtbar

Vorschau (Nachricht wird im Forum „Meta“ erscheinen)

  • Keine Tag-Vorschläge verfügbar
  • keine Tags vergeben

abbrechen