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:
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)
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.
Com certeza! Acho que isso deve corrigir e simplificar muito este código ao mesmo tempo ![]()
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.