Uso di hash non sicuro nei thread in Logster

Durante l’utilizzo di discourse in un’implementazione Ruby multithread e server (TruffleRuby/Puma), gli errori sono prodotti dall’uso non sicuro della hash nella gemma logster vicino a questa sezione:

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

3 Mi Piace

Capisco, c’è qualche possibilità che tu possa aggiungere un Mutex lì in una PR? Sembra l’approccio corretto per risolvere questo problema.

(A parte @dev-managers / @jomaxro, immagino che per parità con altri progetti dovremmo mantenere abilitati i problemi di logster su GitHub? Il mio voto è sì)

4 Mi Piace

Un post è stato diviso in un nuovo argomento: Su quali gemme gestite da Discourse dovremmo abilitare le issue di GitHub

Se viene utilizzato un Mutex, dovrebbe essere utilizzato sia sugli accessi in scrittura che in lettura per garantire la correttezza.

Questa funzionalità sembra più adatta alle variabili fiber/thread-local.
È possibile avere più istanze di Logster::Logger, o ce n’è sempre solo una? Se sono più di una, dobbiamo in qualche modo fare in modo che l’object_id dell’istanza sia parte della chiave utilizzata per le ricerche fiber/thread-local.

1 Mi Piace

Assolutamente! Penso che questo dovrebbe risolvere il problema e semplificare notevolmente questo codice :+1:

2 Mi Piace

Sono abbastanza sicuro che ce ne sia solo una, ma ho aggiunto alcune protezioni.

Ho scelto di non utilizzare un define_finalizer; i consumatori sono responsabili della pulizia, altrimenti la contabilità diventa molto complicata.

Questo argomento è stato chiuso automaticamente dopo 3 giorni. Non sono più consentite nuove risposte.