mongoid_connection_pool 1.0.3 → 1.0.4
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 +7 -0
- data/.travis.yml +6 -0
- data/Gemfile +1 -0
- data/README.md +2 -1
- data/Rakefile +3 -0
- data/lib/mongoid_connection_pool/mongoid/sessions/session_pool.rb +10 -5
- data/lib/mongoid_connection_pool/mongoid/sessions.rb +4 -0
- data/lib/mongoid_connection_pool/version.rb +1 -1
- data/mongoid_connection_pool.gemspec +1 -0
- data/spec/session_pool_spec.rb +1 -1
- data/spec/sessions_spec.rb +17 -1
- metadata +26 -21
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: af30e7fe5080cef0ed8640c322486fc14752172c
|
4
|
+
data.tar.gz: 35b4ae73ad57ae936572ea230aee5ad74e7c9c6b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8a930a2324268e11bc7bbece3f0975cc967057c98736a2ec0fd6d0afcb6b502a29b88c112eb00ad4f192f77d4df524ab24337f87a1f12ed6bdbea425f11babc4
|
7
|
+
data.tar.gz: c86ced6234965db97d60add4c322228e6a07ed5c05ff1d6b0274aa8df81db1cb756c24f0d46db63e9e353d4de813963443759caf5598162fe5de1a52a31d9c1c
|
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
#
|
1
|
+
# Mongoid Connection Pool
|
2
|
+
[](https://travis-ci.org/cpuguy83/mongoid_connection_pool)
|
2
3
|
|
3
4
|
If you ever use Mongoid in a threaded environment such as Sidekiq with Rubinius
|
4
5
|
or JRuby you will quickly find out that Mongoid does not handle DB connections
|
data/Rakefile
CHANGED
@@ -94,15 +94,20 @@ module Mongoid
|
|
94
94
|
attr_reader :sessions, :size, :reaper, :reserved_sessions, :available
|
95
95
|
def initialize(opts={})
|
96
96
|
super()
|
97
|
+
|
97
98
|
opts[:name] ||= :default
|
99
|
+
opts[:size] ||= 5
|
100
|
+
opts[:checkout_timeout] ||= 5
|
101
|
+
# Might be false, disables Reaper
|
102
|
+
opts[:reap_frequency] = 3 if opts[:reap_frequency].nil?
|
98
103
|
|
99
|
-
@reaper = Reaper.new(opts[:reap_frequency]
|
104
|
+
@reaper = Reaper.new(opts[:reap_frequency], self)
|
100
105
|
@reaper.run
|
101
106
|
|
102
|
-
@checkout_timeout = opts[:checkout_timeout]
|
107
|
+
@checkout_timeout = opts[:checkout_timeout]
|
103
108
|
|
104
|
-
@size = opts[:size]
|
105
|
-
@name = opts[:name]
|
109
|
+
@size = opts[:size]
|
110
|
+
@name = opts[:name]
|
106
111
|
@sessions = []
|
107
112
|
@reserved_sessions = ThreadSafe::Cache.new(:initial_capacity => @size)
|
108
113
|
@available = Queue.new self
|
@@ -165,7 +170,7 @@ module Mongoid
|
|
165
170
|
def reap
|
166
171
|
@reserved_sessions.keys.each do |thread|
|
167
172
|
session = @reserved_sessions[thread]
|
168
|
-
checkin(session)
|
173
|
+
checkin(session) unless thread.alive?
|
169
174
|
end
|
170
175
|
end
|
171
176
|
|
data/spec/session_pool_spec.rb
CHANGED
data/spec/sessions_spec.rb
CHANGED
@@ -1,7 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
1
3
|
describe Mongoid::Sessions do
|
4
|
+
before do
|
5
|
+
Mongoid::Sessions.instance_variable_set('@session_pool', nil)
|
6
|
+
end
|
7
|
+
|
8
|
+
describe 'default' do
|
9
|
+
let(:default_pool) do
|
10
|
+
Mongoid::Sessions.instance_variable_get('@session_pool')[:default]
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should take a default session from pool" do
|
14
|
+
expect(Mongoid::Sessions.default).to be_a Moped::Session
|
15
|
+
expect(default_pool.reserved_sessions).to_not be_nil
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
2
19
|
describe '.disconnect' do
|
3
20
|
it "does not lock up when no sessions are created" do
|
4
|
-
Mongoid::Sessions.instance_variable_set('@session_pool', nil)
|
5
21
|
expect(Mongoid::Sessions.disconnect).to_not raise_error
|
6
22
|
end
|
7
23
|
end
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid_connection_pool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.4
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Brian Goff
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-11-08 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,39 +27,34 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rspec
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: mongoid
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
59
|
- - ~>
|
68
60
|
- !ruby/object:Gem::Version
|
@@ -70,11 +62,24 @@ dependencies:
|
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
66
|
- - ~>
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: 3.1.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: thread_safe
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.1.3
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.1.3
|
78
83
|
description: Provides connection pooling for Mongoid
|
79
84
|
email:
|
80
85
|
- cpuguy83@gmail.com
|
@@ -83,6 +88,7 @@ extensions: []
|
|
83
88
|
extra_rdoc_files: []
|
84
89
|
files:
|
85
90
|
- .gitignore
|
91
|
+
- .travis.yml
|
86
92
|
- Gemfile
|
87
93
|
- LICENSE.txt
|
88
94
|
- README.md
|
@@ -100,27 +106,26 @@ files:
|
|
100
106
|
homepage: http://www.github.com/cpuguy83/mongoid_connection_pool
|
101
107
|
licenses:
|
102
108
|
- MIT
|
109
|
+
metadata: {}
|
103
110
|
post_install_message:
|
104
111
|
rdoc_options: []
|
105
112
|
require_paths:
|
106
113
|
- lib
|
107
114
|
required_ruby_version: !ruby/object:Gem::Requirement
|
108
|
-
none: false
|
109
115
|
requirements:
|
110
|
-
- -
|
116
|
+
- - '>='
|
111
117
|
- !ruby/object:Gem::Version
|
112
118
|
version: '0'
|
113
119
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
|
-
none: false
|
115
120
|
requirements:
|
116
|
-
- -
|
121
|
+
- - '>='
|
117
122
|
- !ruby/object:Gem::Version
|
118
123
|
version: '0'
|
119
124
|
requirements: []
|
120
125
|
rubyforge_project:
|
121
|
-
rubygems_version:
|
126
|
+
rubygems_version: 2.0.3
|
122
127
|
signing_key:
|
123
|
-
specification_version:
|
128
|
+
specification_version: 4
|
124
129
|
summary: Provides connection pooling for Mongoid
|
125
130
|
test_files:
|
126
131
|
- spec/session_pool_spec.rb
|