Thread-unsichere Hash-Nutzung in Logster

Bei der Verwendung von Discourse in einer Multi-Thread-Ruby-Implementierung und einem Server (TruffleRuby/Puma) werden Fehler durch die unsichere Hash-Nutzung im Logster-Gem in der Nähe dieses Abschnitts erzeugt:

https://github.com/discourse/logster/blob/31849a4154c6b1edb05fe6d241076329aa228359/lib/logster/logger.rb#L23-L29

3 „Gefällt mir“

Ich verstehe, gibt es eine Möglichkeit, dass Sie einen Mutex in einem PR hinzufügen können? Das scheint der richtige Ansatz zur Behebung dieses Problems zu sein.

(Nebenbei @dev-managers / @jomaxro Ich schätze, um mit anderen Projekten Schritt zu halten, sollten wir die Logster-Probleme auf GitHub aktiviert lassen? Ich stimme dafür.)

4 „Gefällt mir“

Ein Beitrag wurde in ein neues Thema aufgeteilt: Bei welchen von Discourse verwalteten Gems sollen wir GitHub-Probleme aktivieren

Wenn ein Mutex verwendet wird, sollte er aus Gründen der Korrektheit sowohl für Schreib- als auch für Lesezugriffe verwendet werden.

Diese Funktionalität scheint besser zu Faser-/Thread-lokalen Variablen zu passen.
Ist es möglich, mehrere Logster::Logger-Instanzen zu haben, oder immer nur eine? Wenn mehrere, müssen wir irgendwie die object_id der Instanz zum Schlüssel machen, der für Faser-/Thread-lokale Lookups verwendet wird.

1 „Gefällt mir“

Absolut! Ich glaube, das sollte es beheben und den Code gleichzeitig stark vereinfachen :+1:

2 „Gefällt mir“

Ich bin mir ziemlich sicher, dass es nur eine gibt, aber ich habe einige Schutzmaßnahmen hinzugefügt.

Ich habe mich gegen die Verwendung eines define_finalizer entschieden, da die Verbraucher für die Bereinigung verantwortlich sind, andernfalls wird die Abrechnung sehr unübersichtlich.

Dieses Thema wurde nach 3 Tagen automatisch geschlossen. Neue Antworten sind nicht mehr möglich.