2012-03-05 12 views
0

Heroku CedarでPostgresを使用すると、OpenSSLを使用して公開鍵を検証しようとすると、データベースとの接続が失われます。OpenSSL on Heroku - データベース接続が失われました

# Recreate the error using a Base64 encoded key (BASE64_KEY below) you can go into the console and do the following: 

decoded_key = Base64.decode64(BASE64_KEY) 
public_key = OpenSSL::PKey::RSA.new(decoded_key) 
public_key.verify(OpenSSL::Digest::SHA1.new, "", "") 

# Database connection is lost when this fails. 

すべての確認が合格になったときは、大丈夫ですか。私は開発でこの振る舞いを再現することはできません。

なぜ起こるかについてのアイデアはありますか?回避策はありますか?

答えて

0

この後に来る人には、検証プロセスのスレッド化とスレッドの結果の読み出しが終了しました。この方法では、メインスレッドのデータベース接続は失われません。

ほとんど理想的ではありませんが、機能します。

+0

。あなたはそれ以上の理由や解決策を得たことがありますか? – Fringley

+0

Fringleyにそれを残して終了しました。それについてのサポートと広範囲にわたり話し合いが終わり、彼らの結論は "うん、OpenSSLは雌だよ!" 私はこの回避策に何の問題もなかったと言っています。メモリリークを注意する必要がありますが、それは決して問題ではなく、この方法で数十万の認証を維持しました。 –

+0

ええ、我々は同じ解像度の欠如しています。私はちょうどそれを修正することができた!私たちはユニコーンを使い、Herokuが推奨するunicornファイルを使用しています。ファイルの一番下には、スレッドサーバー上でデータベースを再接続するためのコードがあります。私はこのコードをSSLコードの後の私たちのメソッドにコピーしてくれました。記事は次のとおりです:https://devcenter.heroku.com/articles/concurrency-and-database-connections – Fringley