2017-12-12 14 views
2

かなり小さなRails 5.1.4(Ruby 2.3.1)アプリケーションを構築しました。私は生産にそれを展開した後、私は時々、この特定のエラーを取得しています:RuntimeError:Rackの反復処理中に新しいキーをハッシュに追加できません

RuntimeError: can't add a new key into hash during iteration

はここにポインティング:

# rack/request.rb, line 67 
def set_header(name, v) 
    @env[name] = v 
end 

を私は理解して、あなたがいるときに、このエラーが発生しましたハッシュに新しいキーを追加しようとしましたが、そのハッシュを反復処理しています。 @envはハッシュなので意味があります。しかし:私は@env上の反復に関連し、何も見つからなかったスタックトレースで

  1. は、それがapp.call(env)通話の死者シンプルなチェーンです。
  2. このエラーは必ずしも発生するわけではありませんが、1時間または2回に1回だけですので、これも私にとっては非常に奇妙です。
  3. これをローカルで再現することはできません。完全なスタックトレースが唯一のラックミドルウェアで構成されてい

...スレッド安全性の問題であってもよいが、局部的に、それは魔法のように動作可能性がここで見つけることができます: https://gist.github.com/Nattfodd/e513122400b4115a653ea38d69917a9a

Gemfile.lock: https://gist.github.com/Nattfodd/a9015e9204544302bf3959cec466b715

をが

Serverはピューマで実行されている、設定は非常に簡単です:スレッドと労働者のちょうど量:

threads 0, 5 
workers 5 

私の現在の考え方は以下のとおりです。監視宝石の

  • 1のバグ(歩哨-カラスを、持っています私は約1を読んだが、それは1.0.2で修正され、実際のバージョンは1.0.5となっている)
  • 何か超愚かな、私は逃した、しかし、どこから見たらいいか分からない。バックトレースがまったくコントローラが含まれていませんので、ctionは
+0

あなたはこれを理解しましたか?私は同じ問題を抱えています –

+1

ええ、その理由は 'newrelic_rpm'最新バージョンです。まだnewrelic gemでこのエラーの原因となっているものは何も知らない。 – nattfodd

+0

お返事ありがとうございます。どのようなバージョンの新しい遺物が安定していて、この問題を引き起こすことはありませんか? –

答えて

0

は、あなたが完全なスタックを貼り付けることができますすることができます...、これは何かの設定に関連している

  • コードとほとんどがデフォルトされているアプリケーションの設定の3行を...含んでいます-トレース? 私は、set_headerがiterating envメソッドから呼び出されていると仮定しています。

  • +0

    完全なstacktraceへのリンクが私の質問にあります - https://gist.github.com/Nattfodd/e513122400b4115a653ea38d69917a9a – nattfodd

    関連する問題