perfectqueue 0.8.33 → 0.8.34
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +6 -0
- data/lib/perfectqueue/backend/rdb_compat.rb +20 -8
- data/lib/perfectqueue/version.rb +1 -1
- metadata +4 -4
data/ChangeLog
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
== 2014-05-20 version 0.8.34
|
2
|
+
|
3
|
+
* rdb_compat: use connection pooling. Users can specify as :use_connection_pooling
|
4
|
+
option. If connections use SSL, they are, by default, pooled. On the other hand,
|
5
|
+
if not, by default, connection pooling is not used.
|
6
|
+
|
1
7
|
== 2014-04-23 version 0.8.33
|
2
8
|
|
3
9
|
* Fixed nil variable exception at ChildProcessMonitor#try_join
|
@@ -48,16 +48,23 @@ module PerfectQueue
|
|
48
48
|
user: uri.user,
|
49
49
|
password: uri.password,
|
50
50
|
host: uri.host,
|
51
|
-
port: uri.port ? uri.port.to_i : 3306
|
51
|
+
port: uri.port ? uri.port.to_i : 3306,
|
52
|
+
max_connections: 1
|
52
53
|
}
|
53
54
|
options[:sslca] = config[:sslca] if config[:sslca]
|
54
55
|
|
55
56
|
db_name = uri.path.split('/')[1]
|
56
57
|
@db = Sequel.mysql2(db_name, options)
|
58
|
+
if config.fetch(:use_connection_pooling, nil) != nil
|
59
|
+
@use_connection_pooling = !!config[:use_connection_pooling]
|
60
|
+
else
|
61
|
+
@use_connection_pooling = !!config[:sslca]
|
62
|
+
end
|
57
63
|
else
|
58
64
|
raise ConfigError, "'sqlite' and 'mysql' are supported"
|
59
65
|
end
|
60
66
|
|
67
|
+
@last_time = Time.now.to_i
|
61
68
|
@mutex = Mutex.new
|
62
69
|
|
63
70
|
connect {
|
@@ -110,7 +117,7 @@ SQL
|
|
110
117
|
|
111
118
|
attr_reader :db
|
112
119
|
|
113
|
-
|
120
|
+
KEEPALIVE = 10
|
114
121
|
MAX_RETRY = 10
|
115
122
|
DEFAULT_DELETE_INTERVAL = 20
|
116
123
|
|
@@ -328,15 +335,15 @@ SQL
|
|
328
335
|
|
329
336
|
protected
|
330
337
|
def connect(&block)
|
331
|
-
|
338
|
+
now = Time.now.to_i
|
332
339
|
@mutex.synchronize do
|
333
|
-
#
|
334
|
-
|
335
|
-
|
336
|
-
#@last_time = now
|
340
|
+
# keepalive_timeout
|
341
|
+
@db.disconnect if now - @last_time > KEEPALIVE
|
342
|
+
|
337
343
|
count = 0
|
338
344
|
begin
|
339
345
|
block.call
|
346
|
+
@last_time = now
|
340
347
|
rescue
|
341
348
|
# workaround for "Mysql2::Error: Deadlock found when trying to get lock; try restarting transaction" error
|
342
349
|
if $!.to_s.include?('try restarting transaction')
|
@@ -350,9 +357,14 @@ SQL
|
|
350
357
|
STDERR.puts err + "\n abort."
|
351
358
|
end
|
352
359
|
end
|
360
|
+
|
361
|
+
STDERR.puts "disconnects current connection: #{err}"
|
362
|
+
@db.disconnect
|
363
|
+
|
353
364
|
raise
|
354
365
|
ensure
|
355
|
-
|
366
|
+
# connection_pooling
|
367
|
+
@db.disconnect if !@use_connection_pooling
|
356
368
|
end
|
357
369
|
end
|
358
370
|
end
|
data/lib/perfectqueue/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: perfectqueue
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.34
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-05-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sequel
|
@@ -157,7 +157,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
157
157
|
version: '0'
|
158
158
|
segments:
|
159
159
|
- 0
|
160
|
-
hash: -
|
160
|
+
hash: -1427988048662614189
|
161
161
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
162
162
|
none: false
|
163
163
|
requirements:
|
@@ -166,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
166
166
|
version: '0'
|
167
167
|
segments:
|
168
168
|
- 0
|
169
|
-
hash: -
|
169
|
+
hash: -1427988048662614189
|
170
170
|
requirements: []
|
171
171
|
rubyforge_project:
|
172
172
|
rubygems_version: 1.8.24
|