Непотокобезопасное использование хеша в Logster

При использовании Discourse в многопоточной реализации Ruby и сервере (TruffleRuby/Puma) из-за небезопасного использования хешей в библиотеке logster вблизи указанного раздела возникают ошибки:

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

3 лайка

Понятно, есть ли шанс, что вы добавите мьютекс там в PR? Похоже, это правильный подход к исправлению этой проблемы.

(кстати, @dev-managers / @jomaxro, я полагаю, для паритета с другими проектами нам стоит оставить включёнными issues для Logster на GitHub? Мой голос — за)

4 лайка

Пост был разделён на новую тему: На каких управляемых Discourse gems следует включить GitHub issues

Если используется мьютекс, то для обеспечения корректности его следует применять как при записи, так и при чтении.

Однако эта функциональность кажется более подходящей для переменных, локальных по отношению к фибрам или потокам.

Возможно ли создание нескольких экземпляров класса Logster::Logger, или всегда существует только один? Если экземпляров несколько, то каким-то образом необходимо включать object_id экземпляра в ключ, используемый для поиска по переменным, локальным по отношению к фибрам или потокам.

1 лайк

Конечно! Я думаю, это должно исправить проблему и при этом значительно упростить этот код :+1:

2 лайка

Довольно уверен, что только один, но я добавил некоторые защиты.

Я отказался от использования define_finalizer: потребители сами отвечают за очистку, иначе учёт становится очень запутанным.

Эта тема была автоматически закрыта через 3 дня. Новые ответы больше не принимаются.