julien51-em-mysql 0.3.1 → 0.3.2
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.
- data/em-mysql.gemspec +2 -2
- data/lib/em/mysql.rb +10 -8
- metadata +5 -4
data/em-mysql.gemspec
CHANGED
data/lib/em/mysql.rb
CHANGED
@@ -3,6 +3,8 @@ require 'eventmachine'
|
|
3
3
|
require 'mysqlplus'
|
4
4
|
require 'fcntl'
|
5
5
|
|
6
|
+
MAX_RETRIES_ON_DEADLOCKS = 10
|
7
|
+
|
6
8
|
class Mysql
|
7
9
|
def result
|
8
10
|
@cur_result
|
@@ -36,7 +38,7 @@ class EventedMysql < EM::Connection
|
|
36
38
|
log 'readable'
|
37
39
|
if item = @current
|
38
40
|
@current = nil
|
39
|
-
start, response, sql, cblk, eblk = item
|
41
|
+
start, response, sql, cblk, eblk, retries = item
|
40
42
|
log 'mysql response', Time.now-start, sql
|
41
43
|
arg = case response
|
42
44
|
when :raw
|
@@ -71,12 +73,12 @@ class EventedMysql < EM::Connection
|
|
71
73
|
end
|
72
74
|
rescue Mysql::Error => e
|
73
75
|
log 'mysql error', e.message
|
74
|
-
if e.message =~ /Deadlock/
|
75
|
-
@@queue << [response, sql, cblk, eblk]
|
76
|
+
if e.message =~ /Deadlock/ and retries < MAX_RETRIES_ON_DEADLOCKS
|
77
|
+
@@queue << [response, sql, cblk, eblk, retries + 1]
|
76
78
|
@processing = false
|
77
79
|
next_query
|
78
80
|
elsif DisconnectErrors.include? e.message
|
79
|
-
@@queue << [response, sql, cblk, eblk]
|
81
|
+
@@queue << [response, sql, cblk, eblk, retries + 1]
|
80
82
|
return close
|
81
83
|
elsif cb = (eblk || @opts[:on_error])
|
82
84
|
cb.call(e)
|
@@ -118,7 +120,7 @@ class EventedMysql < EM::Connection
|
|
118
120
|
end
|
119
121
|
end
|
120
122
|
|
121
|
-
def execute sql, response = nil, cblk = nil, eblk = nil, &blk
|
123
|
+
def execute sql, response = nil, cblk = nil, eblk = nil, retries = 0, &blk
|
122
124
|
cblk ||= blk
|
123
125
|
|
124
126
|
begin
|
@@ -138,13 +140,13 @@ class EventedMysql < EM::Connection
|
|
138
140
|
log 'mysql sending', sql
|
139
141
|
@mysql.send_query(sql)
|
140
142
|
else
|
141
|
-
@@queue << [response, sql, cblk, eblk]
|
143
|
+
@@queue << [response, sql, cblk, eblk, retries]
|
142
144
|
return
|
143
145
|
end
|
144
146
|
rescue Mysql::Error => e
|
145
147
|
log 'mysql error', e.message
|
146
148
|
if DisconnectErrors.include? e.message
|
147
|
-
@@queue << [response, sql, cblk, eblk]
|
149
|
+
@@queue << [response, sql, cblk, eblk, retries]
|
148
150
|
return close
|
149
151
|
else
|
150
152
|
raise e
|
@@ -152,7 +154,7 @@ class EventedMysql < EM::Connection
|
|
152
154
|
end
|
153
155
|
|
154
156
|
log 'queuing', response, sql
|
155
|
-
@current = [Time.now, response, sql, cblk, eblk]
|
157
|
+
@current = [Time.now, response, sql, cblk, eblk, retries]
|
156
158
|
end
|
157
159
|
|
158
160
|
def close
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: julien51-em-mysql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aman Gupta
|
@@ -36,9 +36,10 @@ files:
|
|
36
36
|
- lib/em/mysql.rb
|
37
37
|
- lib/sequel/async.rb
|
38
38
|
- test.rb
|
39
|
-
has_rdoc:
|
39
|
+
has_rdoc: true
|
40
40
|
homepage: http://github.com/tmm1/em-mysql
|
41
|
-
licenses:
|
41
|
+
licenses: []
|
42
|
+
|
42
43
|
post_install_message:
|
43
44
|
rdoc_options: []
|
44
45
|
|
@@ -61,7 +62,7 @@ requirements: []
|
|
61
62
|
rubyforge_project:
|
62
63
|
rubygems_version: 1.3.5
|
63
64
|
signing_key:
|
64
|
-
specification_version:
|
65
|
+
specification_version: 3
|
65
66
|
summary: Async MySQL client API for Ruby/EventMachine
|
66
67
|
test_files: []
|
67
68
|
|