Versionen dieses Beitrags

Punktevergabe und Mitgliederbereich

Avatar quadraat 2018 Christian Kruse
  • Punktevergabe und Mitgliederbereich
  • 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>