mysql-pause 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
1
  APP_NAME = 'mysql-pause'
2
- Version = '0.1.2'
2
+ Version = '0.1.3'
@@ -2,14 +2,25 @@ require 'eventmachine'
2
2
  require 'mysql-pause/backend'
3
3
  require 'mysql-pause/error'
4
4
  require 'logger'
5
+ require 'socket'
5
6
 
6
7
  module MysqlPause
7
8
  class Proxy < EM::Connection
8
9
 
9
10
  def initialize(be_host, be_port, options)
10
- @backend = EM.connect(be_host, be_port, MysqlPause::Backend, self)
11
11
  @options = options
12
12
  @logger = Logger.new($stdout)
13
+
14
+ begin
15
+ ping(be_host, be_port)
16
+ @backend = EM.connect(be_host, be_port, MysqlPause::Backend, self)
17
+ raise('connect error') if @backend.error?
18
+ rescue => e
19
+ @logger.error("#{e.class.name}: #{e.message}")
20
+ close_backend_connection
21
+ sleep(@options[:interval])
22
+ retry
23
+ end
13
24
  end
14
25
 
15
26
  def receive_data(data)
@@ -22,9 +33,12 @@ module MysqlPause
22
33
 
23
34
  if @backend.error?
24
35
  @logger.info("backend error: #{data.inspect}")
36
+ close_backend_connection
37
+
25
38
  payload_length, sequence_id = parse_mysql_packet(data)
26
39
  error_message = MysqlPause::Error.create_error_message(MysqlPause::Error::ABORTED_BACKEND_CONNECTION, sequence_id + 1)
27
40
  send_data(error_message)
41
+
28
42
  close_connection_after_writing
29
43
  else
30
44
  @backend.send_data(data)
@@ -41,5 +55,16 @@ module MysqlPause
41
55
  [payload_length, sequence_id]
42
56
  end
43
57
 
58
+ def close_backend_connection
59
+ @backend.close_connection if @backend
60
+ rescue Exception => e
61
+ @logger.warn("#{e.class.name}: #{e.message}")
62
+ end
63
+
64
+ def ping(addr, port)
65
+ sock = TCPSocket.open(addr, port)
66
+ sock.close
67
+ end
68
+
44
69
  end # Proxy
45
70
  end # MysqlPause
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mysql-pause
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: