Class: Flydata::Parser::Mysql::FdMysqlClient

Inherits:
Mysql2::Client
  • Object
show all
Defined in:
lib/flydata/parser/mysql/dump_parser.rb

Overview

Custom mysql client that sets config params (eg:-read_timeout) uniformly for all mysql access. Also, gives access to the last query that was executed using the client which can be helpful when handling exceptions

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(db_opts) ⇒ FdMysqlClient

Returns a new instance of FdMysqlClient.



232
233
234
# File 'lib/flydata/parser/mysql/dump_parser.rb', line 232

def initialize(db_opts)
  super(db_opts.merge(read_timeout: 600))
end

Instance Attribute Details

#last_queryObject

Returns the value of attribute last_query.



230
231
232
# File 'lib/flydata/parser/mysql/dump_parser.rb', line 230

def last_query
  @last_query
end

Instance Method Details

#query(sql, options = {}) ⇒ Object



236
237
238
239
240
241
242
243
244
245
246
# File 'lib/flydata/parser/mysql/dump_parser.rb', line 236

def query(sql, options = {})
  @last_query = sql
  begin
    super(sql, options)
  rescue Mysql2::Error => e
    if  /^Timeout waiting for a response/ === e.to_s
      raise "The below query timed out when running. Please check long running processes and locks in your database.\n#{last_query}"
    end
    raise e
  end
end