Uso de hash não seguro em thread no Logster

Ao usar o discourse em uma implementação Ruby multithread e servidor (TruffleRuby/Puma), erros são produzidos pelo uso inseguro de hash na gem logster perto desta seção:

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

3 curtidas

Entendo, há alguma chance de você adicionar um Mutex lá em um PR? Parece a abordagem correta para corrigir isso.

(a propósito @dev-managers / @jomaxro, acho que para paridade com outros projetos devemos manter os problemas do logster habilitados no github? meu voto é sim)

4 curtidas

Uma postagem foi dividida em um novo tópico: Em quais gems gerenciadas pelo Discourse devemos habilitar os problemas do GitHub

Se um Mutex for usado, ele deve ser usado tanto nos acessos de gravação quanto nos de leitura para garantir a correção.

Essa funcionalidade parece ser mais adequada para variáveis locais de fiber/thread.
É possível ter múltiplas instâncias de Logster::Logger, ou é sempre apenas uma? Se forem múltiplas, precisamos de alguma forma fazer com que o object_id da instância faça parte da chave usada para pesquisas locais de fiber/thread.

1 curtida

Com certeza! Acho que isso deve corrigir e simplificar muito este código ao mesmo tempo :+1:

2 curtidas

Tenho quase certeza que há apenas uma, mas adicionei algumas proteções.

Optei por não usar um define_finalizer; os consumidores são responsáveis pela limpeza, caso contrário, a contabilidade fica muito complicada.

Este tópico foi automaticamente fechado após 3 dias. Novas respostas não são mais permitidas.