ruby-mysql
ruby-mysql copied to clipboard
Errno::EPIPE in Mysql::Protocol.write
When I try to connect to a rails app after a while (no other users, using rails 2.3.5, unicorn, ruby-mysql, with mysql server version 5.1.41 using tcp sockets), the first heartbeat (active? call from ActiveRecord's mysql adapter) runs into a broken pipe error.
I haven't found yet why TCPSocket#flush returns EPIPE on FreeBSD, but nevertheless it would be great to have a graceful handling of this error too.
Here's the backtrace:
[GEM_ROOT]/gems/ruby-mysql-2.9.2/lib/mysql/protocol.rb:617:in `flush' [GEM_ROOT]/gems/ruby-mysql-2.9.2/lib/mysql/protocol.rb:617:in `block in write' /usr/local/lib/ruby/1.9/timeout.rb:44:in `timeout' [GEM_ROOT]/gems/ruby-mysql-2.9.2/lib/mysql/protocol.rb:616:in `write' [GEM_ROOT]/gems/ruby-mysql-2.9.2/lib/mysql/protocol.rb:640:in `block in simple_command' [GEM_ROOT]/gems/ruby-mysql-2.9.2/lib/mysql/protocol.rb:545:in `synchronize' [GEM_ROOT]/gems/ruby-mysql-2.9.2/lib/mysql/protocol.rb:638:in `simple_command' [GEM_ROOT]/gems/ruby-mysql-2.9.2/lib/mysql/protocol.rb:413:in `statistics_command' [GEM_ROOT]/gems/ruby-mysql-2.9.2/lib/mysql.rb:502:in `stat' [GEM_ROOT]/gems/activerecord-2.3.5/lib/active_record/connection_adapters/mysql_adapter.rb:277:in `active?' [GEM_ROOT]/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract_adapter.rb:150:in `verify!' [GEM_ROOT]/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:256:in `checkout_and_verify' [GEM_ROOT]/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:252:in `checkout_existing_connection' [GEM_ROOT]/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:186:in `block (2 levels) in checkout' [GEM_ROOT]/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:184:in `loop' [GEM_ROOT]/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:184:in `block in checkout' /usr/local/lib/ruby/1.9/monitor.rb:190:in `mon_synchronize' [GEM_ROOT]/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:183:in `checkout' [GEM_ROOT]/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:98:in `connection' [GEM_ROOT]/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:326:in `retrieve_connection' [GEM_ROOT]/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/connection_specification.rb:123:in `retrieve_connection' [GEM_ROOT]/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/connection_specification.rb:115:in `connection' [GEM_ROOT]/gems/activerecord-2.3.5/lib/active_record/query_cache.rb:9:in `cache' [GEM_ROOT]/gems/activerecord-2.3.5/lib/active_record/query_cache.rb:28:in `call' [GEM_ROOT]/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:in `call' [GEM_ROOT]/gems/rack-1.0.1/lib/rack/static.rb:33:in `call' [GEM_ROOT]/gems/rack-bug-0.2.1/lib/rack/bug/toolbar.rb:14:in `call' [GEM_ROOT]/gems/rack-bug-0.2.1/lib/rack/bug/toolbar.rb:54:in `pass' [GEM_ROOT]/gems/rack-bug-0.2.1/lib/rack/bug/toolbar.rb:49:in `call' [GEM_ROOT]/gems/actionpack-2.3.5/lib/action_controller/string_coercion.rb:25:in `call' [GEM_ROOT]/gems/rack-1.0.1/lib/rack/head.rb:9:in `call' [GEM_ROOT]/gems/rack-1.0.1/lib/rack/methodoverride.rb:24:in `call' [GEM_ROOT]/gems/actionpack-2.3.5/lib/action_controller/params_parser.rb:15:in `call' [GEM_ROOT]/gems/actionpack-2.3.5/lib/action_controller/session/cookie_store.rb:93:in `call' [GEM_ROOT]/gems/actionpack-2.3.5/lib/action_controller/failsafe.rb:26:in `call' [GEM_ROOT]/gems/rack-1.0.1/lib/rack/lock.rb:11:in `block in call' : [GEM_ROOT]/gems/rack-1.0.1/lib/rack/lock.rb:11:in `call' [GEM_ROOT]/gems/actionpack-2.3.5/lib/action_controller/dispatcher.rb:106:in `call' [GEM_ROOT]/gems/rails-2.3.5/lib/rails/rack/static.rb:31:in `call' [GEM_ROOT]/gems/rack-1.0.1/lib/rack/urlmap.rb:46:in `block in call' [GEM_ROOT]/gems/rack-1.0.1/lib/rack/urlmap.rb:40:in `each' [GEM_ROOT]/gems/rack-1.0.1/lib/rack/urlmap.rb:40:in `call' [GEM_ROOT]/gems/unicorn-0.97.0/lib/unicorn.rb:634:in `process_client' [GEM_ROOT]/gems/unicorn-0.97.0/lib/unicorn.rb:707:in `block in worker_loop' [GEM_ROOT]/gems/unicorn-0.97.0/lib/unicorn.rb:705:in `each' [GEM_ROOT]/gems/unicorn-0.97.0/lib/unicorn.rb:705:in `worker_loop' [GEM_ROOT]/gems/unicorn-0.97.0/lib/unicorn.rb:596:in `block (2 levels) in spawn_missing_workers' [GEM_ROOT]/gems/unicorn-0.97.0/lib/unicorn.rb:593:in `fork' [GEM_ROOT]/gems/unicorn-0.97.0/lib/unicorn.rb:593:in `block in spawn_missing_workers' [GEM_ROOT]/gems/unicorn-0.97.0/lib/unicorn.rb:589:in `each' [GEM_ROOT]/gems/unicorn-0.97.0/lib/unicorn.rb:589:in `spawn_missing_workers' [GEM_ROOT]/gems/unicorn-0.97.0/lib/unicorn.rb:603:in `maintain_worker_count' [GEM_ROOT]/gems/unicorn-0.97.0/lib/unicorn.rb:270:in `start' [GEM_ROOT]/gems/unicorn-0.97.0/lib/unicorn.rb:29:in `run' [GEM_ROOT]/gems/unicorn-0.97.0/bin/unicorn_rails:204:in `' /usr/local/bin/unicorn_rails:19:in `load' /usr/local/bin/unicorn_rails:19:in ` '
and this is my rake gems output (version names added by me):
- [I] authlogic 2.1.3
- [R] activesupport 2.3.5
- [I] cancan 1.0.2
- [I] workflow 0.3.0
- [I] haml 2.2.22
- [I] will_paginate 2.3.12
- [I] formtastic 0.9.8
- [R] activesupport 2.3.5
- [R] actionpack 2.3.5
- [I] tiny_mce 0.1.2
- [I] sqlite3-ruby 1.2.5
- [I] ruby-mysql 2.9.2
- [I] hoptoad_notifier 2.2.2
- [R] activesupport 2.3.5
- [I] newrelic_rpm 2.10.6
- [I] rack-bug 0.2.1
- [I] inploy 1.4.1
I'm using unicorn 0.97.0 with ruby 1.9.1p376 built from FreeBSD ports tree.