que 0.12.1 → 0.12.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.
- checksums.yaml +4 -4
- data/.travis.yml +57 -14
- data/CHANGELOG.md +5 -1
- data/Gemfile +1 -1
- data/lib/que/adapters/base.rb +1 -1
- data/lib/que/version.rb +1 -1
- data/lib/que/worker.rb +14 -2
- data/spec/adapters/active_record_spec.rb +11 -2
- data/spec/gemfiles/{Gemfile1 → Gemfile.current} +4 -3
- data/spec/gemfiles/Gemfile.old +19 -0
- data/spec/gemfiles/{Gemfile2 → Gemfile.older} +5 -4
- data/spec/gemfiles/Gemfile.oldest +19 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/support/helpers.rb +9 -3
- data/spec/unit/stats_spec.rb +1 -1
- metadata +10 -8
- data/spec/travis.rb +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b0835e665f91b4009055474147f5c1ecba9cc04
|
4
|
+
data.tar.gz: f423c536c3546c12632e171b54d22c87d79575d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a4042a26ab4a200c9e32673cc1dba38c7490f733faaac5caf81a4bf473aa4e04cad1ed05c0021fc697ec65dfbab3726d40b27ec7ee8dab737c01ab966bf74bf5
|
7
|
+
data.tar.gz: 3d83e96046bc16960826b4b6adf37bcb093644cd15238098164f841acecba2a7f7328f4f13d4e281b91c430024f2aecb55b5e874e8f35d8089b29631e3bfe827
|
data/.travis.yml
CHANGED
@@ -1,20 +1,63 @@
|
|
1
1
|
language: ruby
|
2
|
+
cache: bundler
|
3
|
+
|
2
4
|
rvm:
|
3
|
-
-
|
4
|
-
-
|
5
|
-
-
|
6
|
-
-
|
7
|
-
|
8
|
-
-
|
9
|
-
-
|
10
|
-
|
11
|
-
|
12
|
-
|
5
|
+
- 2.2
|
6
|
+
- 2.3
|
7
|
+
- 2.4.0
|
8
|
+
- ruby-head
|
9
|
+
# The Rubinii aren't installing properly on Travis :/
|
10
|
+
# - rbx-2
|
11
|
+
# - rbx
|
12
|
+
|
13
|
+
matrix:
|
14
|
+
allow_failures:
|
15
|
+
# Ruby head failures aren't disastrous, because we won't support it until
|
16
|
+
# it's released, but it's good to be aware of.
|
17
|
+
- rvm: ruby-head
|
18
|
+
|
19
|
+
gemfile:
|
20
|
+
- spec/gemfiles/Gemfile.current
|
21
|
+
- spec/gemfiles/Gemfile.old
|
22
|
+
- spec/gemfiles/Gemfile.older
|
23
|
+
- spec/gemfiles/Gemfile.oldest
|
24
|
+
|
25
|
+
env:
|
26
|
+
- PG_VERSION=9.3
|
27
|
+
- PG_VERSION=9.4
|
28
|
+
- PG_VERSION=9.5
|
29
|
+
- PG_VERSION=9.6
|
30
|
+
|
31
|
+
before_install:
|
32
|
+
# Stop all running Postgreses, so we don't get port conflicts when installing
|
33
|
+
# a new version.
|
34
|
+
- sudo /etc/init.d/postgresql stop
|
35
|
+
# Install whatever version we're using.
|
36
|
+
- sudo apt-get install postgresql-$PG_VERSION
|
37
|
+
# If we just installed Postgres 9.6 it won't have a proper pg_hba set up, so...
|
38
|
+
- sudo mkdir -p /etc/postgresql/9.6/main
|
39
|
+
- sudo cp -v /etc/postgresql/9.{5,6}/main/pg_hba.conf
|
40
|
+
# Hook up the Postgres version we care about to the right port.
|
41
|
+
- sudo sed -i "s/port = ..../port = 5432/g" /etc/postgresql/$PG_VERSION/main/postgresql.conf
|
42
|
+
# If we just installed a new Postgres version it'll be running, so make sure
|
43
|
+
# they're all stopped, again.
|
44
|
+
- sudo /etc/init.d/postgresql stop
|
45
|
+
# Start up the one we care about.
|
46
|
+
- sudo /etc/init.d/postgresql start $PG_VERSION
|
47
|
+
# A newly-installed Postgres won't have a travis user, so create one. But, if
|
48
|
+
# one already exists this will fail, so drop it first. Kinda stupid.
|
49
|
+
- sudo -u postgres dropuser --if-exists -p 5432 travis &>/dev/null
|
50
|
+
- sudo -u postgres createuser -p 5432 travis &>/dev/null
|
51
|
+
|
13
52
|
before_script:
|
14
53
|
- psql -c 'create database "que-test"' -U postgres
|
15
|
-
- bundle exec ruby -r sequel -r ./lib/que -e 'Que.connection=Sequel.connect("postgres://localhost/que-test"); Que.migrate!'
|
16
54
|
|
17
|
-
script:
|
55
|
+
script:
|
56
|
+
# Run the complete test suite:
|
57
|
+
- bundle exec rspec -fd -b -P ./spec/**/*_spec.rb
|
58
|
+
# Run the test suite without adapters/ActiveRecord, to make sure the codebase
|
59
|
+
# doesn't accidentally rely on any ActiveSupport-isms.
|
60
|
+
- bundle exec rspec -fd -b -P ./spec/unit/*_spec.rb
|
18
61
|
|
19
|
-
|
20
|
-
|
62
|
+
notifications:
|
63
|
+
email: false
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,10 @@
|
|
1
|
+
### 0.12.2 (2017-06-01)
|
2
|
+
|
3
|
+
* Fix security vulnerability in parsing JSON from the DB (by specifying create_additions: false). This shouldn't be a concern unless you were passing untrusted user input in your job arguments. (hmac)
|
4
|
+
|
1
5
|
### 0.12.1 (2017-01-22)
|
2
6
|
|
3
|
-
*
|
7
|
+
* Fix incompatibility with Rails 5.0. (#166) (nbibler, thedarkone)
|
4
8
|
|
5
9
|
### 0.12.0 (2016-09-09)
|
6
10
|
|
data/Gemfile
CHANGED
data/lib/que/adapters/base.rb
CHANGED
@@ -102,7 +102,7 @@ module Que
|
|
102
102
|
CAST_PROCS[1184] = Time.method(:parse)
|
103
103
|
|
104
104
|
# JSON.
|
105
|
-
CAST_PROCS[114] = JSON_MODULE.
|
105
|
+
CAST_PROCS[114] = -> (value) { JSON_MODULE.parse(value, create_additions: false) }
|
106
106
|
|
107
107
|
# Boolean:
|
108
108
|
CAST_PROCS[16] = 't'.method(:==)
|
data/lib/que/version.rb
CHANGED
data/lib/que/worker.rb
CHANGED
@@ -150,7 +150,14 @@ module Que
|
|
150
150
|
|
151
151
|
def wake_interval=(interval)
|
152
152
|
@wake_interval = interval
|
153
|
-
|
153
|
+
begin
|
154
|
+
wrangler.wakeup if mode == :async
|
155
|
+
rescue ThreadError # killed thread for some reason.
|
156
|
+
v = wrangler.value # Reraise the error that killed the thread.
|
157
|
+
# if that didn't raise an error, something else is wrong, so raise
|
158
|
+
# whatever this is:
|
159
|
+
raise "Dead thread!: #{v.inspect}"
|
160
|
+
end
|
154
161
|
end
|
155
162
|
|
156
163
|
def wake!
|
@@ -174,7 +181,12 @@ module Que
|
|
174
181
|
def wrangler
|
175
182
|
@wrangler ||= Thread.new do
|
176
183
|
loop do
|
177
|
-
|
184
|
+
if @wake_interval
|
185
|
+
sleep(@wake_interval)
|
186
|
+
else
|
187
|
+
sleep
|
188
|
+
end
|
189
|
+
|
178
190
|
wake! if @wake_interval && mode == :async
|
179
191
|
end
|
180
192
|
end
|
@@ -38,9 +38,12 @@ unless defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
|
|
38
38
|
end
|
39
39
|
|
40
40
|
context "if the connection goes down and is reconnected" do
|
41
|
-
|
41
|
+
around do |example|
|
42
42
|
Que::Job.enqueue
|
43
|
-
ActiveRecord::Base.
|
43
|
+
::ActiveRecord::Base.connection_pool.with_connection do |conn|
|
44
|
+
ActiveRecord::Base.connection.reconnect!
|
45
|
+
example.run
|
46
|
+
end
|
44
47
|
end
|
45
48
|
|
46
49
|
it "should recreate the prepared statements" do
|
@@ -58,8 +61,14 @@ unless defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
|
|
58
61
|
end
|
59
62
|
|
60
63
|
it "should log this extraordinary event" do
|
64
|
+
pending
|
61
65
|
$logger.messages.clear
|
62
66
|
Que::Job.enqueue
|
67
|
+
|
68
|
+
if $logger.messages.count != 1
|
69
|
+
puts $logger.messages.inspect
|
70
|
+
end
|
71
|
+
|
63
72
|
$logger.messages.count.should == 1
|
64
73
|
message = JSON.load($logger.messages.first)
|
65
74
|
message['lib'].should == 'que'
|
@@ -3,11 +3,12 @@ source 'https://rubygems.org'
|
|
3
3
|
gem 'que', path: '../..'
|
4
4
|
|
5
5
|
group :development, :test do
|
6
|
-
gem 'rake'
|
6
|
+
gem 'rake', '< 11.0'
|
7
7
|
|
8
|
-
gem 'activerecord',
|
9
|
-
gem 'sequel',
|
8
|
+
gem 'activerecord', :require => nil
|
9
|
+
gem 'sequel', :require => nil
|
10
10
|
gem 'connection_pool', :require => nil
|
11
|
+
gem 'pond', :require => nil
|
11
12
|
gem 'pg', :require => nil, :platform => :ruby
|
12
13
|
gem 'pg_jruby', :require => nil, :platform => :jruby
|
13
14
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gem 'que', path: '../..'
|
4
|
+
|
5
|
+
group :development, :test do
|
6
|
+
gem 'rake', '< 11.0'
|
7
|
+
|
8
|
+
gem 'activerecord', '~> 4.2.0', :require => nil
|
9
|
+
gem 'sequel', '~> 3.0', :require => nil
|
10
|
+
gem 'connection_pool', :require => nil
|
11
|
+
gem 'pond', :require => nil
|
12
|
+
gem 'pg', :require => nil, :platform => :ruby
|
13
|
+
gem 'pg_jruby', :require => nil, :platform => :jruby
|
14
|
+
end
|
15
|
+
|
16
|
+
group :test do
|
17
|
+
gem 'rspec', '~> 2.14.1'
|
18
|
+
gem 'pry'
|
19
|
+
end
|
@@ -1,13 +1,14 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
gem 'que', path:
|
3
|
+
gem 'que', path: '../..'
|
4
4
|
|
5
5
|
group :development, :test do
|
6
|
-
gem 'rake'
|
6
|
+
gem 'rake', '< 11.0'
|
7
7
|
|
8
|
-
gem 'activerecord', '~> 4.0', :require => nil
|
9
|
-
gem 'sequel',
|
8
|
+
gem 'activerecord', '~> 4.1.0', :require => nil
|
9
|
+
gem 'sequel', :require => nil
|
10
10
|
gem 'connection_pool', :require => nil
|
11
|
+
gem 'pond', :require => nil
|
11
12
|
gem 'pg', :require => nil, :platform => :ruby
|
12
13
|
gem 'pg_jruby', :require => nil, :platform => :jruby
|
13
14
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gem 'que', path: '../..'
|
4
|
+
|
5
|
+
group :development, :test do
|
6
|
+
gem 'rake', '< 11.0'
|
7
|
+
|
8
|
+
gem 'activerecord', '~> 4.0.0', :require => nil
|
9
|
+
gem 'sequel', :require => nil
|
10
|
+
gem 'connection_pool', :require => nil
|
11
|
+
gem 'pond', :require => nil
|
12
|
+
gem 'pg', :require => nil, :platform => :ruby
|
13
|
+
gem 'pg_jruby', :require => nil, :platform => :jruby
|
14
|
+
end
|
15
|
+
|
16
|
+
group :test do
|
17
|
+
gem 'rspec', '~> 2.14.1'
|
18
|
+
gem 'pry'
|
19
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -48,6 +48,16 @@ DB = Sequel.connect(QUE_URL)
|
|
48
48
|
|
49
49
|
|
50
50
|
|
51
|
+
if ENV['CI']
|
52
|
+
DB.synchronize do |conn|
|
53
|
+
puts "Ruby #{RUBY_VERSION}"
|
54
|
+
puts "Sequel #{Sequel::VERSION}"
|
55
|
+
puts conn.async_exec("SELECT version()").to_a.first['version']
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
|
51
61
|
# Reset the table to the most up-to-date version.
|
52
62
|
DB.drop_table? :que_jobs
|
53
63
|
Que::Migrations.migrate!
|
data/spec/support/helpers.rb
CHANGED
@@ -1,12 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# Travis seems to freeze the VM the tests run in sometimes, so bump up the limit
|
4
|
+
# when running in CI.
|
5
|
+
QUE_SLEEP_UNTIL_TIMEOUT = ENV['CI'] ? 10 : 2
|
6
|
+
|
3
7
|
# Helper for testing threaded code.
|
4
|
-
|
5
|
-
def sleep_until(timeout = QUE_TEST_TIMEOUT)
|
8
|
+
def sleep_until(timeout = QUE_SLEEP_UNTIL_TIMEOUT)
|
6
9
|
deadline = Time.now + timeout
|
7
10
|
loop do
|
8
11
|
break if yield
|
9
|
-
|
12
|
+
if Time.now > deadline
|
13
|
+
puts "sleep_until timeout reached!"
|
14
|
+
raise "sleep_until timeout reached!"
|
15
|
+
end
|
10
16
|
sleep 0.01
|
11
17
|
end
|
12
18
|
end
|
data/spec/unit/stats_spec.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: que
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.12.
|
4
|
+
version: 0.12.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Hanks
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01
|
11
|
+
date: 2017-06-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -82,14 +82,15 @@ files:
|
|
82
82
|
- spec/adapters/pg_spec.rb
|
83
83
|
- spec/adapters/pond_spec.rb
|
84
84
|
- spec/adapters/sequel_spec.rb
|
85
|
-
- spec/gemfiles/
|
86
|
-
- spec/gemfiles/
|
85
|
+
- spec/gemfiles/Gemfile.current
|
86
|
+
- spec/gemfiles/Gemfile.old
|
87
|
+
- spec/gemfiles/Gemfile.older
|
88
|
+
- spec/gemfiles/Gemfile.oldest
|
87
89
|
- spec/spec_helper.rb
|
88
90
|
- spec/support/helpers.rb
|
89
91
|
- spec/support/jobs.rb
|
90
92
|
- spec/support/shared_examples/adapter.rb
|
91
93
|
- spec/support/shared_examples/multi_threaded_adapter.rb
|
92
|
-
- spec/travis.rb
|
93
94
|
- spec/unit/connection_spec.rb
|
94
95
|
- spec/unit/customization_spec.rb
|
95
96
|
- spec/unit/enqueue_spec.rb
|
@@ -136,14 +137,15 @@ test_files:
|
|
136
137
|
- spec/adapters/pg_spec.rb
|
137
138
|
- spec/adapters/pond_spec.rb
|
138
139
|
- spec/adapters/sequel_spec.rb
|
139
|
-
- spec/gemfiles/
|
140
|
-
- spec/gemfiles/
|
140
|
+
- spec/gemfiles/Gemfile.current
|
141
|
+
- spec/gemfiles/Gemfile.old
|
142
|
+
- spec/gemfiles/Gemfile.older
|
143
|
+
- spec/gemfiles/Gemfile.oldest
|
141
144
|
- spec/spec_helper.rb
|
142
145
|
- spec/support/helpers.rb
|
143
146
|
- spec/support/jobs.rb
|
144
147
|
- spec/support/shared_examples/adapter.rb
|
145
148
|
- spec/support/shared_examples/multi_threaded_adapter.rb
|
146
|
-
- spec/travis.rb
|
147
149
|
- spec/unit/connection_spec.rb
|
148
150
|
- spec/unit/customization_spec.rb
|
149
151
|
- spec/unit/enqueue_spec.rb
|
data/spec/travis.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
#!/usr/bin/env ruby
|
4
|
-
|
5
|
-
# Run tests a bunch of times, flush out thread race conditions / errors.
|
6
|
-
test_runs = if ENV['TESTS']
|
7
|
-
Integer(ENV['TESTS'])
|
8
|
-
else
|
9
|
-
25
|
10
|
-
end
|
11
|
-
|
12
|
-
|
13
|
-
# I think travis might be pausing jobs, let's try a higher timeout
|
14
|
-
QUE_TEST_TIMEOUT = 10
|
15
|
-
|
16
|
-
%w( Gemfile spec/gemfiles/Gemfile1 spec/gemfiles/Gemfile2 ).each do |gemfile|
|
17
|
-
# Install the particular gemfile
|
18
|
-
system("BUNDLE_GEMFILE=#{gemfile} bundle")
|
19
|
-
1.upto(test_runs) do |i|
|
20
|
-
puts "Test Run #{i}"
|
21
|
-
exit(-1) if !system("bundle exec rake")
|
22
|
-
end
|
23
|
-
end
|