Ruby Excon SSL SocketError:读完了A.

时间:2014-06-10 21:57:20

标签: ruby ssl amazon-s3 fog excon

将Ruby on Rails与Carrierwave + Fog一起使用,它依赖于Excon连接到S3。 Rails服务器正在AWS EC2上运行。大多数情况下,Carrierwave上传器工作正常,但我经常得到以下错误和堆栈跟踪:

Excon::Errors::SocketError: SSL_connect SYSCALL returned=5 errno=0 state=SSLv3 read finished A (OpenSSL::SSL::SSLError)
…y/gems/2.1.0/gems/excon-0.36.0/lib/excon/ssl_socket.rb: 105:in `connect_nonblock'
…y/gems/2.1.0/gems/excon-0.36.0/lib/excon/ssl_socket.rb: 105:in `block in initialize'
/usr/local/lib/ruby/2.1.0/timeout.rb:  91:in `block in timeout'
/usr/local/lib/ruby/2.1.0/timeout.rb:  35:in `block in catch'
/usr/local/lib/ruby/2.1.0/timeout.rb:  35:in `catch'
/usr/local/lib/ruby/2.1.0/timeout.rb:  35:in `catch'
/usr/local/lib/ruby/2.1.0/timeout.rb: 106:in `timeout'
…y/gems/2.1.0/gems/excon-0.36.0/lib/excon/ssl_socket.rb: 101:in `initialize'
…y/gems/2.1.0/gems/excon-0.36.0/lib/excon/connection.rb: 414:in `new'
…y/gems/2.1.0/gems/excon-0.36.0/lib/excon/connection.rb: 414:in `socket'
…y/gems/2.1.0/gems/excon-0.36.0/lib/excon/connection.rb: 126:in `request_call'
…/2.1.0/gems/excon-0.36.0/lib/excon/middlewares/mock.rb:  42:in `request_call'
…ems/excon-0.36.0/lib/excon/middlewares/instrumentor.rb:  22:in `request_call'
…/2.1.0/gems/excon-0.36.0/lib/excon/middlewares/base.rb:  15:in `request_call'
…/2.1.0/gems/excon-0.36.0/lib/excon/middlewares/base.rb:  15:in `request_call'
…/2.1.0/gems/excon-0.36.0/lib/excon/middlewares/base.rb:  15:in `request_call'
…y/gems/2.1.0/gems/excon-0.36.0/lib/excon/connection.rb: 269:in `request'
…/gems/excon-0.36.0/lib/excon/middlewares/idempotent.rb:  12:in `error_call'
…/2.1.0/gems/excon-0.36.0/lib/excon/middlewares/base.rb:  10:in `error_call'
…/2.1.0/gems/excon-0.36.0/lib/excon/middlewares/base.rb:  10:in `error_call'
…y/gems/2.1.0/gems/excon-0.36.0/lib/excon/connection.rb: 292:in `rescue in request'
…y/gems/2.1.0/gems/excon-0.36.0/lib/excon/connection.rb: 229:in `request'
…/gems/excon-0.36.0/lib/excon/middlewares/idempotent.rb:  12:in `error_call'
…/2.1.0/gems/excon-0.36.0/lib/excon/middlewares/base.rb:  10:in `error_call'
…/2.1.0/gems/excon-0.36.0/lib/excon/middlewares/base.rb:  10:in `error_call'
…y/gems/2.1.0/gems/excon-0.36.0/lib/excon/connection.rb: 292:in `rescue in request'
…y/gems/2.1.0/gems/excon-0.36.0/lib/excon/connection.rb: 229:in `request'
…/gems/excon-0.36.0/lib/excon/middlewares/idempotent.rb:  12:in `error_call'
…/2.1.0/gems/excon-0.36.0/lib/excon/middlewares/base.rb:  10:in `error_call'
…/2.1.0/gems/excon-0.36.0/lib/excon/middlewares/base.rb:  10:in `error_call'
…y/gems/2.1.0/gems/excon-0.36.0/lib/excon/connection.rb: 292:in `rescue in request'
…y/gems/2.1.0/gems/excon-0.36.0/lib/excon/connection.rb: 229:in `request'
…/2.1.0/gems/fog-core-1.22.0/lib/fog/core/connection.rb:  56:in `request'
…cal/lib/ruby/gems/2.1.0/gems/fog-1.22.1/lib/fog/xml.rb:  23:in `request'
…ruby/gems/2.1.0/gems/fog-1.22.1/lib/fog/aws/storage.rb: 535:in `request'
…/fog-1.22.1/lib/fog/aws/requests/storage/put_object.rb:  31:in `put_object'
…1.0/gems/fog-1.22.1/lib/fog/aws/models/storage/file.rb: 199:in `save'
…/2.1.0/gems/fog-core-1.22.0/lib/fog/core/collection.rb:  51:in `create'
…gems/carrierwave-0.10.0/lib/carrierwave/storage/fog.rb: 261:in `store'
…gems/carrierwave-0.10.0/lib/carrierwave/storage/fog.rb:  80:in `store!'
…s/carrierwave-0.10.0/lib/carrierwave/uploader/store.rb:  59:in `block in store!'
…rrierwave-0.10.0/lib/carrierwave/uploader/callbacks.rb:  17:in `with_callbacks'
…s/carrierwave-0.10.0/lib/carrierwave/uploader/store.rb:  58:in `store!'
…2.1.0/gems/carrierwave-0.10.0/lib/carrierwave/mount.rb: 375:in `store!'
…2.1.0/gems/carrierwave-0.10.0/lib/carrierwave/mount.rb: 207:in `store_finish_image!'

知道发生了什么事吗?

1 个答案:

答案 0 :(得分:0)

作为第一步,我建议升级到0.37.0。我在那里修复了一个关于chunked编码的错误,不确定它会以这种方式表现出来,但最好在走错路径之前减少可能性。

更新:没有什么可以跳出来,但写作应该是幂等的。如果这是间歇性的,那么抢救/重试此特定错误可能是最好/最简单的。