tengine_core 0.5.34 → 0.5.35

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.
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