在使用 Discourse 的多线程 Ruby 实现和服务器(TruffleRuby/Puma)时,logster gem 中不安全的哈希(hash)使用会在以下部分附近产生错误:
3 个赞
好的,您是否可以添加一个互斥锁(Mutex)到 PR 中?这似乎是解决此问题的正确方法。
(另外,@dev-managers / @jomaxro,我想为了与其他项目保持一致,我们应该在 GitHub 上启用 logster 问题?我投票赞成。)
4 个赞
一个帖子被拆分到一个新主题:我们应该在哪些 Discourse 管理的 gem 上启用 GitHub 问题
如果使用了 Mutex,为了正确性,它应该同时用于写入和读取访问。
此功能似乎更适合 fiber/thread-local 变量。
是否可以拥有多个 Logster::Logger 实例,还是只有一个?如果存在多个,我们需要某种方式将实例的 object_id 作为 fiber/thread-local 查找所用键的一部分。
1 个赞
当然!我认为这应该可以解决问题,同时大大简化此代码 ![]()
2 个赞
我很确定只有一个,但我添加了一些保护措施。
我选择不使用 define_finalizer,由消费者负责清理,否则记账会变得非常复杂。
此主题已在 3 天后自动关闭。不再允许回复。