mongoid_connection_pool 1.0.4 → 1.0.5
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 +2 -2
- data/lib/mongoid_connection_pool/mongoid/sessions/session_pool.rb +11 -1
- data/lib/mongoid_connection_pool/version.rb +1 -1
- data/spec/session_pool_spec.rb +25 -0
- metadata +17 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4eb370db1decf12b4592bd69227d32caaf49f03c
|
4
|
+
data.tar.gz: 7a36ee9d22077e96ec85ff63d88c098ce84be334
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 28663a2b586314764cd4813653785cf890d795cb00b0ffef220a5b56f868c05d4fd49dc6e0e407f5d083bbb27cb6b62ebdbf52de4f0dd31271091ae668ff2bab
|
7
|
+
data.tar.gz: 4a59a7b89391b3c085fe532b95a697acd74a296d061c5171c8b1169c16c2b39892e62cbc3676092e4f9e616aa51013266790d9d39b6c896b88d18a407584603f
|
data/.travis.yml
CHANGED
@@ -205,6 +205,8 @@ module Mongoid
|
|
205
205
|
end
|
206
206
|
|
207
207
|
def get_session
|
208
|
+
# always double check the reaper is running, if we got forked after it starts we dont have a thread anymore
|
209
|
+
@reaper.run unless @reaper.alive?
|
208
210
|
if session = @available.poll
|
209
211
|
session
|
210
212
|
elsif @sessions.size < @size
|
@@ -233,14 +235,22 @@ module Mongoid
|
|
233
235
|
class Reaper
|
234
236
|
attr_reader :pool
|
235
237
|
attr_reader :frequency
|
238
|
+
attr_reader :reaper
|
239
|
+
|
236
240
|
def initialize(frequency, pool)
|
237
241
|
@frequency = frequency
|
238
242
|
@pool = pool
|
239
243
|
end
|
240
244
|
|
245
|
+
def alive?
|
246
|
+
return true unless frequency
|
247
|
+
# under rbx 2.2.4 this now works, also works correctly under mri at latest patch levels
|
248
|
+
reaper.alive?
|
249
|
+
end
|
250
|
+
|
241
251
|
def run
|
242
252
|
return unless frequency
|
243
|
-
Thread.new(frequency, pool) do |t, p|
|
253
|
+
@reaper = Thread.new(frequency, pool) do |t, p|
|
244
254
|
while true
|
245
255
|
sleep t
|
246
256
|
p.reap
|
data/spec/session_pool_spec.rb
CHANGED
@@ -105,6 +105,31 @@ describe Mongoid::Sessions::SessionPool do
|
|
105
105
|
|
106
106
|
end
|
107
107
|
|
108
|
+
describe '.checkout' do
|
109
|
+
|
110
|
+
before do
|
111
|
+
session_pool.clear
|
112
|
+
end
|
113
|
+
|
114
|
+
let(:session) do
|
115
|
+
session_pool.checkout
|
116
|
+
end
|
117
|
+
|
118
|
+
it 'Restarts the Reaper when it dies' do
|
119
|
+
# checkin session
|
120
|
+
session_pool.checkin(session)
|
121
|
+
# kill the reap and wait for it to die
|
122
|
+
session_pool.reaper.reaper.kill
|
123
|
+
session_pool.reaper.reaper.join
|
124
|
+
# reaper should now be dead
|
125
|
+
session_pool.reaper.reaper.alive?.should be_false
|
126
|
+
session_pool.checkout
|
127
|
+
# checkout should restart the reaper
|
128
|
+
session_pool.reaper.alive?.should be_true
|
129
|
+
end
|
130
|
+
|
131
|
+
end
|
132
|
+
|
108
133
|
describe '.session_for' do
|
109
134
|
|
110
135
|
before do
|
metadata
CHANGED
@@ -1,83 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid_connection_pool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Goff
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.3'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: mongoid
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 3.1.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - ~>
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 3.1.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: thread_safe
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - ~>
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: 0.1.3
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - ~>
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 0.1.3
|
83
83
|
description: Provides connection pooling for Mongoid
|
@@ -87,8 +87,8 @@ executables: []
|
|
87
87
|
extensions: []
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
|
-
- .gitignore
|
91
|
-
- .travis.yml
|
90
|
+
- ".gitignore"
|
91
|
+
- ".travis.yml"
|
92
92
|
- Gemfile
|
93
93
|
- LICENSE.txt
|
94
94
|
- README.md
|
@@ -113,17 +113,17 @@ require_paths:
|
|
113
113
|
- lib
|
114
114
|
required_ruby_version: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
|
-
- -
|
116
|
+
- - ">="
|
117
117
|
- !ruby/object:Gem::Version
|
118
118
|
version: '0'
|
119
119
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
120
|
requirements:
|
121
|
-
- -
|
121
|
+
- - ">="
|
122
122
|
- !ruby/object:Gem::Version
|
123
123
|
version: '0'
|
124
124
|
requirements: []
|
125
125
|
rubyforge_project:
|
126
|
-
rubygems_version: 2.0
|
126
|
+
rubygems_version: 2.2.0
|
127
127
|
signing_key:
|
128
128
|
specification_version: 4
|
129
129
|
summary: Provides connection pooling for Mongoid
|