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