mongoid_connection_pool 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
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