タグ

2021年2月23日のブックマーク (1件)

  • Timeout.timeout を安全に使うのは難しい | Wantedly Engineer Blog

    こんにちは!Wantedlyエンジニアの縣です。 先日 Rails アプリケーションで ActiveRecord::StatementInvalid: PG::DuplicatePstatement というエラーが確率的に発生するという事象に遭遇し、その原因が Timeout.timeout と関係していてなかなか面白かったので記事に書き起こすことにしました。 (この記事を書くために今改めて調べてみたところ、 https://github.com/rails/rails/pull/41356 で ActiveRecord に関しては問題が解決していることがわかりました。が、記録として投稿しておきます。) TL;DRRuby の Timeout.timeout は非同期例外を発生させる非同期例外発生時に ActiveRecord の Connection の内部状態が壊れたことでエラーが

    Timeout.timeout を安全に使うのは難しい | Wantedly Engineer Blog
    igrep
    igrep 2021/02/23
    HaskellのmaskはRubyではThread.handle_interrupt(Exception => :on_blocking)なのね。"本来やりたかったことを達成できません"とはいうけどそんな厳密な時間制限が必要ならRuby使うの止めるしかないよ。maskするような処理って大抵小さいし