Logster におけるスレッドセーフでないハッシュの使用

マルチスレッドのRuby実装とサーバー(TruffleRuby/Puma)でDiscourseを使用していると、logster gemの安全でないハッシュの使用により、このセクションの近くでエラーが発生します。

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

「いいね!」 3

承知いたしました。PRでミューテックスを追加していただけますでしょうか?それがこの問題を解決する正しいアプローチのように思われます。

(余談ですが、@dev-managers / @jomaxro GitHubでlogsterの問題を有効にしておくべきだと思いますか?私は賛成です)

「いいね!」 4

投稿が新しいトピックに分割されました: どの Discourse 管理下の gem で GitHub Issues を有効にすべきか

Mutex を使用する場合、正しく動作させるためには書き込みと読み取りの両方のアクセスで使用する必要があります。

この機能は、ファイバー/スレッドローカル変数の方が適しているように感じます。

複数の Logster::Logger インスタンスを持つことは可能ですか、それとも常に 1 つだけですか? 複数ある場合、ファイバー/スレッドローカル検索に使用されるキーの一部としてインスタンスの object_id を含める必要があります。

「いいね!」 1

はい、これで修正され、コードも大幅に簡略化されるはずです!:+1:

「いいね!」 2

おそらく1つだけですが、いくつかの保護を追加しました。

define_finalizerの使用をオプトアウトしました。コンシューマーはクリーンアップの責任を負うため、そうでなければアカウンティングは非常に複雑になります。

このトピックは3日後に自動的に閉じられました。新しい返信はもう許可されていません。