tengine_core 0.5.34 → 0.5.35

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.34
1
+ 0.5.35
@@ -1,19 +1,37 @@
1
1
  # -*- coding: utf-8 -*-
2
+
2
3
  require 'tengine_core'
3
4
  require 'mongoid'
4
5
  require 'mongoid/version'
5
6
  require 'mongoid/cursor'
6
7
 
7
- if Mongoid::VERSION <= "3.0.0"
8
+ if Mongoid::VERSION < "3.0.0"
8
9
  class Mongoid::Cursor
9
10
  # https://github.com/mongoid/mongoid/pull/1609
10
11
  def each
11
- loop do
12
- retry_on_connection_failure do
13
- return unless document = cursor.next
12
+ retry_on_connection_failure do
13
+ while document = cursor.next
14
14
  yield Mongoid::Factory.from_db(klass, document)
15
15
  end
16
16
  end
17
17
  end
18
+
19
+ # https://github.com/mongoid/mongoid/pull/1739
20
+ def retry_on_connection_failure
21
+ retries = 0
22
+ begin
23
+ yield
24
+ rescue Mongo::ConnectionFailure, Mongo::OperationTimeout => ex
25
+ retries = increase_retry_attempts(retries, ex)
26
+ retry
27
+ rescue Mongo::OperationFailure => ex
28
+ if ex.message =~ /not master/
29
+ retries = increase_retry_attempts(retries, ex)
30
+ retry
31
+ else
32
+ raise ex
33
+ end
34
+ end
35
+ end
18
36
  end
19
37
  end
@@ -0,0 +1,52 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+ require 'tengine/core/mongoid_fix'
4
+
5
+ describe Mongoid::Cursor do
6
+
7
+ class TestDocument
8
+ include Mongoid::Document
9
+ end
10
+
11
+ [
12
+ Mongo::ConnectionFailure,
13
+ Mongo::OperationTimeout,
14
+ Mongo::OperationFailure
15
+ ].each do |e|
16
+
17
+ context e do
18
+
19
+ subject { TestDocument.all }
20
+
21
+ before(:all) { TestDocument.new.save }
22
+
23
+ before do
24
+ ex = e.new "not master"
25
+ @m = Mongoid.max_retries_on_connection_failure
26
+ Mongoid.max_retries_on_connection_failure = 32
27
+ n = 0
28
+ Mongo::Cursor.any_instance.stub(:next) do
29
+ n += 1
30
+ raise ex while n < 1
31
+ nil
32
+ end
33
+ end
34
+
35
+ after do
36
+ Mongoid.max_retries_on_connection_failure = @m
37
+ # Mongo::Cursor.any_instance.unstub(:next)
38
+ TestDocument.delete_all
39
+ end
40
+
41
+ it do
42
+ begin
43
+ subject.to_a
44
+ rescue Exception
45
+ puts $!.backtrace
46
+ end
47
+ end
48
+ # its(:to_a) { should be_empty }
49
+ end
50
+ end
51
+
52
+ end
data/tengine_core.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "tengine_core"
8
- s.version = "0.5.34"
8
+ s.version = "0.5.35"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["taigou", "totty", "g-morita", "shyouhei", "akm", "hiroshinakao"]
@@ -162,6 +162,7 @@ Gem::Specification.new do |s|
162
162
  "spec/tengine/core/heartbeat_watcher_spec.rb",
163
163
  "spec/tengine/core/io_to_logger_spec.rb",
164
164
  "spec/tengine/core/kernel_spec.rb",
165
+ "spec/tengine/core/mongoid_fix_spec.rb",
165
166
  "spec/tengine/core/mutex_spec.rb",
166
167
  "spec/tengine/core/optimistic_lock_spec.rb",
167
168
  "spec/tengine/core/scheculer_spec.rb",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tengine_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.34
4
+ version: 0.5.35
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -18,7 +18,7 @@ date: 2012-02-21 00:00:00.000000000Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: activesupport
21
- requirement: &70354082424400 !ruby/object:Gem::Requirement
21
+ requirement: &70348981397000 !ruby/object:Gem::Requirement
22
22
  none: false
23
23
  requirements:
24
24
  - - ~>
@@ -26,10 +26,10 @@ dependencies:
26
26
  version: 3.1.0
27
27
  type: :runtime
28
28
  prerelease: false
29
- version_requirements: *70354082424400
29
+ version_requirements: *70348981397000
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: activemodel
32
- requirement: &70354082423860 !ruby/object:Gem::Requirement
32
+ requirement: &70348981396480 !ruby/object:Gem::Requirement
33
33
  none: false
34
34
  requirements:
35
35
  - - ~>
@@ -37,10 +37,10 @@ dependencies:
37
37
  version: 3.1.0
38
38
  type: :runtime
39
39
  prerelease: false
40
- version_requirements: *70354082423860
40
+ version_requirements: *70348981396480
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: selectable_attr
43
- requirement: &70354082423340 !ruby/object:Gem::Requirement
43
+ requirement: &70348981295680 !ruby/object:Gem::Requirement
44
44
  none: false
45
45
  requirements:
46
46
  - - ~>
@@ -48,10 +48,10 @@ dependencies:
48
48
  version: 0.3.15
49
49
  type: :runtime
50
50
  prerelease: false
51
- version_requirements: *70354082423340
51
+ version_requirements: *70348981295680
52
52
  - !ruby/object:Gem::Dependency
53
53
  name: bson
54
- requirement: &70354082422760 !ruby/object:Gem::Requirement
54
+ requirement: &70348981295000 !ruby/object:Gem::Requirement
55
55
  none: false
56
56
  requirements:
57
57
  - - ~>
@@ -59,10 +59,10 @@ dependencies:
59
59
  version: 1.5.2
60
60
  type: :runtime
61
61
  prerelease: false
62
- version_requirements: *70354082422760
62
+ version_requirements: *70348981295000
63
63
  - !ruby/object:Gem::Dependency
64
64
  name: bson_ext
65
- requirement: &70354082422220 !ruby/object:Gem::Requirement
65
+ requirement: &70348981294400 !ruby/object:Gem::Requirement
66
66
  none: false
67
67
  requirements:
68
68
  - - ~>
@@ -70,10 +70,10 @@ dependencies:
70
70
  version: 1.5.2
71
71
  type: :runtime
72
72
  prerelease: false
73
- version_requirements: *70354082422220
73
+ version_requirements: *70348981294400
74
74
  - !ruby/object:Gem::Dependency
75
75
  name: mongo
76
- requirement: &70354082421720 !ruby/object:Gem::Requirement
76
+ requirement: &70348981293880 !ruby/object:Gem::Requirement
77
77
  none: false
78
78
  requirements:
79
79
  - - ~>
@@ -81,10 +81,10 @@ dependencies:
81
81
  version: 1.5.2
82
82
  type: :runtime
83
83
  prerelease: false
84
- version_requirements: *70354082421720
84
+ version_requirements: *70348981293880
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: mongoid
87
- requirement: &70354082421220 !ruby/object:Gem::Requirement
87
+ requirement: &70348981293300 !ruby/object:Gem::Requirement
88
88
  none: false
89
89
  requirements:
90
90
  - - ~>
@@ -92,10 +92,10 @@ dependencies:
92
92
  version: 2.3.3
93
93
  type: :runtime
94
94
  prerelease: false
95
- version_requirements: *70354082421220
95
+ version_requirements: *70348981293300
96
96
  - !ruby/object:Gem::Dependency
97
97
  name: tengine_support
98
- requirement: &70354082420740 !ruby/object:Gem::Requirement
98
+ requirement: &70348981292760 !ruby/object:Gem::Requirement
99
99
  none: false
100
100
  requirements:
101
101
  - - ~>
@@ -103,10 +103,10 @@ dependencies:
103
103
  version: 0.3.12
104
104
  type: :runtime
105
105
  prerelease: false
106
- version_requirements: *70354082420740
106
+ version_requirements: *70348981292760
107
107
  - !ruby/object:Gem::Dependency
108
108
  name: tengine_event
109
- requirement: &70354082420240 !ruby/object:Gem::Requirement
109
+ requirement: &70348981292260 !ruby/object:Gem::Requirement
110
110
  none: false
111
111
  requirements:
112
112
  - - ~>
@@ -114,10 +114,10 @@ dependencies:
114
114
  version: 0.4.0
115
115
  type: :runtime
116
116
  prerelease: false
117
- version_requirements: *70354082420240
117
+ version_requirements: *70348981292260
118
118
  - !ruby/object:Gem::Dependency
119
119
  name: daemons
120
- requirement: &70354082419720 !ruby/object:Gem::Requirement
120
+ requirement: &70348981291760 !ruby/object:Gem::Requirement
121
121
  none: false
122
122
  requirements:
123
123
  - - ~>
@@ -125,10 +125,10 @@ dependencies:
125
125
  version: 1.1.4
126
126
  type: :runtime
127
127
  prerelease: false
128
- version_requirements: *70354082419720
128
+ version_requirements: *70348981291760
129
129
  - !ruby/object:Gem::Dependency
130
130
  name: rspec
131
- requirement: &70354082419200 !ruby/object:Gem::Requirement
131
+ requirement: &70348981291280 !ruby/object:Gem::Requirement
132
132
  none: false
133
133
  requirements:
134
134
  - - ~>
@@ -136,10 +136,10 @@ dependencies:
136
136
  version: 2.6.0
137
137
  type: :development
138
138
  prerelease: false
139
- version_requirements: *70354082419200
139
+ version_requirements: *70348981291280
140
140
  - !ruby/object:Gem::Dependency
141
141
  name: factory_girl
142
- requirement: &70354082418680 !ruby/object:Gem::Requirement
142
+ requirement: &70348981290780 !ruby/object:Gem::Requirement
143
143
  none: false
144
144
  requirements:
145
145
  - - ~>
@@ -147,10 +147,10 @@ dependencies:
147
147
  version: 2.1.2
148
148
  type: :development
149
149
  prerelease: false
150
- version_requirements: *70354082418680
150
+ version_requirements: *70348981290780
151
151
  - !ruby/object:Gem::Dependency
152
152
  name: yard
153
- requirement: &70354082418080 !ruby/object:Gem::Requirement
153
+ requirement: &70348981290260 !ruby/object:Gem::Requirement
154
154
  none: false
155
155
  requirements:
156
156
  - - ~>
@@ -158,10 +158,10 @@ dependencies:
158
158
  version: 0.7.2
159
159
  type: :development
160
160
  prerelease: false
161
- version_requirements: *70354082418080
161
+ version_requirements: *70348981290260
162
162
  - !ruby/object:Gem::Dependency
163
163
  name: bundler
164
- requirement: &70354082417480 !ruby/object:Gem::Requirement
164
+ requirement: &70348981289740 !ruby/object:Gem::Requirement
165
165
  none: false
166
166
  requirements:
167
167
  - - ~>
@@ -169,10 +169,10 @@ dependencies:
169
169
  version: 1.0.18
170
170
  type: :development
171
171
  prerelease: false
172
- version_requirements: *70354082417480
172
+ version_requirements: *70348981289740
173
173
  - !ruby/object:Gem::Dependency
174
174
  name: jeweler
175
- requirement: &70354082416900 !ruby/object:Gem::Requirement
175
+ requirement: &70348981289220 !ruby/object:Gem::Requirement
176
176
  none: false
177
177
  requirements:
178
178
  - - ~>
@@ -180,10 +180,10 @@ dependencies:
180
180
  version: 1.6.4
181
181
  type: :development
182
182
  prerelease: false
183
- version_requirements: *70354082416900
183
+ version_requirements: *70348981289220
184
184
  - !ruby/object:Gem::Dependency
185
185
  name: simplecov
186
- requirement: &70354082416400 !ruby/object:Gem::Requirement
186
+ requirement: &70348981288620 !ruby/object:Gem::Requirement
187
187
  none: false
188
188
  requirements:
189
189
  - - ~>
@@ -191,10 +191,10 @@ dependencies:
191
191
  version: 0.5.3
192
192
  type: :development
193
193
  prerelease: false
194
- version_requirements: *70354082416400
194
+ version_requirements: *70348981288620
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: ZenTest
197
- requirement: &70354082415720 !ruby/object:Gem::Requirement
197
+ requirement: &70348981288020 !ruby/object:Gem::Requirement
198
198
  none: false
199
199
  requirements:
200
200
  - - ~>
@@ -202,10 +202,10 @@ dependencies:
202
202
  version: 4.6.2
203
203
  type: :development
204
204
  prerelease: false
205
- version_requirements: *70354082415720
205
+ version_requirements: *70348981288020
206
206
  - !ruby/object:Gem::Dependency
207
207
  name: rdiscount
208
- requirement: &70354082415240 !ruby/object:Gem::Requirement
208
+ requirement: &70348981287440 !ruby/object:Gem::Requirement
209
209
  none: false
210
210
  requirements:
211
211
  - - ! '>='
@@ -213,10 +213,10 @@ dependencies:
213
213
  version: '0'
214
214
  type: :development
215
215
  prerelease: false
216
- version_requirements: *70354082415240
216
+ version_requirements: *70348981287440
217
217
  - !ruby/object:Gem::Dependency
218
218
  name: kramdown
219
- requirement: &70354082414600 !ruby/object:Gem::Requirement
219
+ requirement: &70348981286960 !ruby/object:Gem::Requirement
220
220
  none: false
221
221
  requirements:
222
222
  - - ! '>='
@@ -224,7 +224,7 @@ dependencies:
224
224
  version: '0'
225
225
  type: :development
226
226
  prerelease: false
227
- version_requirements: *70354082414600
227
+ version_requirements: *70348981286960
228
228
  description: tengine_core is a framework/engine to support distributed processing
229
229
  email: tengine@nautilus-technologies.com
230
230
  executables:
@@ -380,6 +380,7 @@ files:
380
380
  - spec/tengine/core/heartbeat_watcher_spec.rb
381
381
  - spec/tengine/core/io_to_logger_spec.rb
382
382
  - spec/tengine/core/kernel_spec.rb
383
+ - spec/tengine/core/mongoid_fix_spec.rb
383
384
  - spec/tengine/core/mutex_spec.rb
384
385
  - spec/tengine/core/optimistic_lock_spec.rb
385
386
  - spec/tengine/core/scheculer_spec.rb