Skip to content

Instantly share code, notes, and snippets.

@mech
Forked from defunkt/connection_fix.rb
Created April 20, 2010 17:21
Show Gist options
  • Save mech/372773 to your computer and use it in GitHub Desktop.
Save mech/372773 to your computer and use it in GitHub Desktop.

Revisions

  1. @defunkt defunkt revised this gist Nov 19, 2009. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions connection_fix.rb
    Original file line number Diff line number Diff line change
    @@ -4,6 +4,8 @@
    # This hack ensures we re-connect whenever a connection is
    # lost. Because, really. why not?
    #
    # Stick this in RAILS_ROOT/config/initializers/connection_fix.rb (or somewhere similar)
    #
    # From:
    # http://coderrr.wordpress.com/2009/01/08/activerecord-threading-issues-and-resolutions/

  2. @defunkt defunkt created this gist Nov 19, 2009.
    26 changes: 26 additions & 0 deletions connection_fix.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,26 @@
    # If your workers are inactive for a long period of time, they'll lose
    # their MySQL connection.
    #
    # This hack ensures we re-connect whenever a connection is
    # lost. Because, really. why not?
    #
    # From:
    # http://coderrr.wordpress.com/2009/01/08/activerecord-threading-issues-and-resolutions/

    module ActiveRecord::ConnectionAdapters
    class MysqlAdapter
    alias_method :execute_without_retry, :execute

    def execute(*args)
    execute_without_retry(*args)
    rescue ActiveRecord::StatementInvalid => e
    if e.message =~ /server has gone away/i
    warn "Server timed out, retrying"
    reconnect!
    retry
    else
    raise e
    end
    end
    end
    end