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 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
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ rvm:
3
+ - rbx-19mode
4
+ - 2.0.0
5
+ - 1.9.3
6
+ - jruby-19mode
data/Gemfile CHANGED
@@ -4,5 +4,6 @@ source 'https://rubygems.org'
4
4
  gemspec
5
5
 
6
6
  gem 'mongoid', '~> 3.1.0'
7
+ gem 'thread_safe', '~> 0.1.3'
7
8
 
8
9
  gem 'rspec', groups: [:development, :test]
data/README.md CHANGED
@@ -1,4 +1,5 @@
1
- # MongoidConnectionPool
1
+ # Mongoid Connection Pool
2
+ [![Build Status](https://travis-ci.org/cpuguy83/mongoid_connection_pool.png?branch=master)](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
@@ -1 +1,4 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rspec/core/rake_task'
3
+ task :default => :spec
4
+ RSpec::Core::RakeTask.new
@@ -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] || 10, self)
104
+ @reaper = Reaper.new(opts[:reap_frequency], self)
100
105
  @reaper.run
101
106
 
102
- @checkout_timeout = opts[:checkout_timeout] || 5
107
+ @checkout_timeout = opts[:checkout_timeout]
103
108
 
104
- @size = opts[:size] || 5
105
- @name = opts[:name] || :default
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) if thread.stop?
173
+ checkin(session) unless thread.alive?
169
174
  end
170
175
  end
171
176
 
@@ -35,6 +35,10 @@ module Mongoid
35
35
  true
36
36
  end
37
37
 
38
+ def default
39
+ with_name(:default)
40
+ end
41
+
38
42
  def with_name(name)
39
43
  session_pool(name).session_for_thread(Thread.current) ||
40
44
  session_pool(name).checkout
@@ -1,3 +1,3 @@
1
1
  module MongoidConnectionPool
2
- VERSION = "1.0.3"
2
+ VERSION = "1.0.4"
3
3
  end
@@ -23,4 +23,5 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "rspec"
24
24
 
25
25
  spec.add_runtime_dependency "mongoid", "~> 3.1.0"
26
+ spec.add_runtime_dependency "thread_safe", "~> 0.1.3"
26
27
  end
@@ -95,7 +95,7 @@ describe Mongoid::Sessions::SessionPool do
95
95
  Thread.new { session_pool.checkout }
96
96
  end
97
97
 
98
- it 'Reaps sessions from dead/sleeping threads' do
98
+ it 'Reaps sessions from dead threads' do
99
99
  thread.join
100
100
 
101
101
  expect(session_pool.reap).to be_true
@@ -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.3
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-10-15 00:00:00.000000000 Z
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: 1.8.24
126
+ rubygems_version: 2.0.3
122
127
  signing_key:
123
- specification_version: 3
128
+ specification_version: 4
124
129
  summary: Provides connection pooling for Mongoid
125
130
  test_files:
126
131
  - spec/session_pool_spec.rb