activerecord-mysql-reconnect 0.3.9 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 198fac8c01fa7e97d0af2958fe6dd03ec002161d
4
- data.tar.gz: 21505eb2e5b498c9cbe2d1b46fc273a0551086c8
3
+ metadata.gz: 4739211c7d68c950f02a389a199ac953edb9346c
4
+ data.tar.gz: aa3824a24006c4f756e8888776b1be254a6b9d92
5
5
  SHA512:
6
- metadata.gz: 22ba2d7d0e2534848c04068827dfb6c3c0d45ea7b3a002988e3570bd3d80870289b7761170a1ac62a1a44faf3393050b5cf33e727ddb9e7029a5e42f99533d20
7
- data.tar.gz: 3c3cd86cc7f1e218b733dfde7c2dccdbb80c12badcec3f30784e5ed6b8ec059709f3becb38f9ff8db6692d3d4671a8e14ef9a7184a094c9bd0270e155f5a3b04
6
+ metadata.gz: 088a4a7e0b756eff50878720a35c27ad96c1e93a002dc3c7cabdff0c9220f4b057b636b3693bc305ec95167c6234cdb51929972d61acef5df7954acb14b56558
7
+ data.tar.gz: 86a1698ce6854e3b10bae489f8e6178a6472c50fd94fa5fd16ef73894c350ef0a2dd6496abe35497d0be5316d1d6cb5682b942bbda3264bdf1047fb38b43ce58
@@ -1,18 +1,28 @@
1
+ dist: trusty
2
+ sudo: required
1
3
  language: ruby
2
4
  rvm:
3
- - 2.0.0
4
- script:
5
- - if [ -n "$ACTIVERECORD_MYSQL_RECONNECT_AR_VERSION" ]; then sed -i.bak "s/spec.add_dependency 'activerecord'.*/spec.add_dependency 'activerecord', '~> $ACTIVERECORD_MYSQL_RECONNECT_AR_VERSION'/" activerecord-mysql-reconnect.gemspec; fi
6
- - sudo apt-get -y install sysvbanner
7
- - banner `mysqld --version`
8
- - banner $ACTIVERECORD_MYSQL_RECONNECT_ENGINE
9
- - bundle install -j4
10
- - banner `bundle exec ruby -e 'require "active_record"; puts ActiveRecord::VERSION::STRING'`
11
- - bundle exec rake
5
+ - 2.0.0
6
+ - 2.1.8
7
+ - 2.2.4
8
+ - 2.3.0
9
+ before_install:
10
+ - gem install bundler
11
+ - sudo apt-get -y install sysvbanner
12
+ - if [ -n "$ACTIVERECORD_MYSQL_RECONNECT_AR_VERSION" ]; then sed -i.bak "s/spec.add_dependency 'activerecord'.*/spec.add_dependency 'activerecord', '~> $ACTIVERECORD_MYSQL_RECONNECT_AR_VERSION'/" activerecord-mysql-reconnect.gemspec; fi
13
+ - bundle install
14
+ before_scriot:
15
+ - banner `mysqld --version`
16
+ - banner $ACTIVERECORD_MYSQL_RECONNECT_ENGINE
17
+ - banner `bundle exec ruby -e 'require "active_record"; puts ActiveRecord::VERSION::STRING'`
18
+ scriot:
19
+ - bundle exec rake
12
20
  env:
13
- - ACTIVERECORD_MYSQL_RECONNECT_ENGINE=InnoDB
14
- - ACTIVERECORD_MYSQL_RECONNECT_AR_VERSION=3.2.19 ACTIVERECORD_MYSQL_RECONNECT_ENGINE=InnoDB
15
- - ACTIVERECORD_MYSQL_RECONNECT_AR_VERSION=4.0.8 ACTIVERECORD_MYSQL_RECONNECT_ENGINE=InnoDB
16
- - ACTIVERECORD_MYSQL_RECONNECT_ENGINE=MyISAM
17
- - ACTIVERECORD_MYSQL_RECONNECT_AR_VERSION=3.2.19 ACTIVERECORD_MYSQL_RECONNECT_ENGINE=MyISAM
18
- - ACTIVERECORD_MYSQL_RECONNECT_AR_VERSION=4.0.8 ACTIVERECORD_MYSQL_RECONNECT_ENGINE=MyISAM
21
+ - ACTIVERECORD_MYSQL_RECONNECT_ENGINE=InnoDB ACTIVERECORD_MYSQL_RECONNECT_AR_VERSION=4.2.6
22
+ - ACTIVERECORD_MYSQL_RECONNECT_ENGINE=MyISAM ACTIVERECORD_MYSQL_RECONNECT_AR_VERSION=4.2.6
23
+ addons:
24
+ apt:
25
+ packages:
26
+ - mysql-server-5.6
27
+ - mysql-client-core-5.6
28
+ - mysql-client-5.6
data/ChangeLog CHANGED
@@ -1,21 +1,26 @@
1
- activerecord-mysql-reconnect 0.3.3 (January 18, 2014)
1
+ activerecord-mysql-reconnect 0.4.0 (Mar 22, 2016)
2
+
3
+ * Remove `retryable_transaction`
4
+ * Disable support AR 3.x 4.0
5
+
6
+ activerecord-mysql-reconnect 0.3.3 (Jan 18, 2014)
2
7
 
3
8
  * use BigDecimal for sleep
4
9
  * add handling error ('The MySQL server is running with the --read-only...')
5
10
 
6
- activerecord-mysql-reconnect 0.3.1 (January 9, 2014)
11
+ activerecord-mysql-reconnect 0.3.1 (Jan 9, 2014)
7
12
 
8
13
  * Retry mode is added
9
14
 
10
- activerecord-mysql-reconnect 0.3.0 (January 9, 2014)
15
+ activerecord-mysql-reconnect 0.3.0 (Jan 9, 2014)
11
16
 
12
17
  * Retry is disabled by default
13
18
  * Read-only mode is added
14
19
 
15
- activerecord-mysql-reconnect 0.2.0 (January 4, 2014)
20
+ activerecord-mysql-reconnect 0.2.0 (Jan 4, 2014)
16
21
 
17
22
  * Retry transaction is supported
18
23
 
19
- activerecord-mysql-reconnect 0.1.0 (October 11, 2013)
24
+ activerecord-mysql-reconnect 0.1.0 (Oct 11, 2013)
20
25
 
21
26
  * activerecord-mysql-reconnect is released
data/README.md CHANGED
@@ -66,16 +66,6 @@ ActiveRecord::Base.without_retry do
66
66
  end
67
67
  ```
68
68
 
69
- ### retryable_transaction
70
-
71
- ```ruby
72
- ActiveRecord::Base.retryable_transaction do
73
- Employee.create(emp_no: 1, birth_date: Time.now, first_name: 'Scott', last_name: 'Tiger', hire_date: Time.now)
74
- Employee.create(emp_no: 2, birth_date: Time.now, first_name: 'Scott', last_name: 'Tiger', hire_date: Time.now)
75
- Employee.create(emp_no: 3, birth_date: Time.now, first_name: 'Scott', last_name: 'Tiger', hire_date: Time.now)
76
- end
77
- ```
78
-
79
69
  ## Use on rails
80
70
 
81
71
  ### Gemfile
@@ -18,10 +18,10 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- # '~> 3.2.19' or '~> 4.0.8' or '~> 4.1.4'
21
+ # '~> 4.2.6'
22
22
  spec.add_dependency 'activerecord'
23
23
  spec.add_dependency 'mysql2'
24
- spec.add_development_dependency 'bundler', '~> 1.3'
24
+ spec.add_development_dependency 'bundler'
25
25
  spec.add_development_dependency 'rake'
26
26
  spec.add_development_dependency 'rspec', '>= 3.0.0'
27
27
  spec.add_development_dependency 'rspec-instafail'
@@ -11,8 +11,7 @@ require 'active_record/connection_adapters/abstract/connection_pool'
11
11
 
12
12
  require 'activerecord/mysql/reconnect/version'
13
13
  require 'activerecord/mysql/reconnect/base_ext'
14
- # XXX:
15
- #require 'activerecord/mysql/reconnect/abstract_adapter_ext'
14
+
16
15
  require 'activerecord/mysql/reconnect/abstract_mysql_adapter_ext'
17
16
  require 'activerecord/mysql/reconnect/mysql2_adapter_ext'
18
17
  require 'activerecord/mysql/reconnect/connection_pool_ext'
@@ -22,7 +21,6 @@ module Activerecord::Mysql::Reconnect
22
21
  DEFAULT_EXECUTION_RETRY_WAIT = 0.5
23
22
 
24
23
  WITHOUT_RETRY_KEY = 'activerecord-mysql-reconnect-without-retry'
25
- RETRYABLE_TRANSACTION_KEY = 'activerecord-mysql-reconnect-transaction-retry'
26
24
 
27
25
  HANDLE_ERROR = [
28
26
  ActiveRecord::StatementInvalid,
@@ -163,22 +161,6 @@ module Activerecord::Mysql::Reconnect
163
161
  !!Thread.current[WITHOUT_RETRY_KEY]
164
162
  end
165
163
 
166
- def retryable_transaction
167
- begin
168
- Thread.current[RETRYABLE_TRANSACTION_KEY] = []
169
-
170
- ActiveRecord::Base.transaction do
171
- yield
172
- end
173
- ensure
174
- Thread.current[RETRYABLE_TRANSACTION_KEY] = nil
175
- end
176
- end
177
-
178
- def retryable_transaction_buffer
179
- Thread.current[RETRYABLE_TRANSACTION_KEY]
180
- end
181
-
182
164
  private
183
165
 
184
166
  def retryable_loop(n)
@@ -7,7 +7,6 @@ class ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter
7
7
  retval = execute_without_reconnect(s, n)
8
8
  end
9
9
 
10
- add_sql_to_transaction(sql, name)
11
10
  retval
12
11
  end
13
12
  end
@@ -19,7 +18,6 @@ class ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter
19
18
  def retryable(sql, name, &block)
20
19
  block_with_reconnect = nil
21
20
  sql_names = [[sql, name]]
22
- orig_transaction = @transaction
23
21
 
24
22
  Activerecord::Mysql::Reconnect.retryable(
25
23
  :proc => proc {
@@ -29,32 +27,13 @@ class ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter
29
27
  unless block_with_reconnect
30
28
  block_with_reconnect = proc do |i|
31
29
  reconnect_without_retry!
32
- @transaction = orig_transaction if orig_transaction
33
30
  block.call(i)
34
31
  end
35
32
  end
36
-
37
- sql_names = merge_transaction(sql, name)
38
33
  },
39
34
  :sql => sql,
40
35
  :retry_mode => Activerecord::Mysql::Reconnect.retry_mode,
41
36
  :connection => @connection
42
37
  )
43
38
  end
44
-
45
- def add_sql_to_transaction(sql, name)
46
- if (buf = Activerecord::Mysql::Reconnect.retryable_transaction_buffer)
47
- buf << [sql, name]
48
- end
49
- end
50
-
51
- def merge_transaction(sql, name)
52
- sql_name = [sql, name]
53
-
54
- if (buf = Activerecord::Mysql::Reconnect.retryable_transaction_buffer)
55
- buf + [sql_name]
56
- else
57
- [sql_name]
58
- end
59
- end
60
39
  end
@@ -1,7 +1,7 @@
1
1
  module Activerecord
2
2
  module Mysql
3
3
  module Reconnect
4
- VERSION = '0.3.9'
4
+ VERSION = '0.4.0'
5
5
  end
6
6
  end
7
7
  end
@@ -118,7 +118,7 @@ describe 'activerecord-mysql-reconnect' do
118
118
  mysql_restart
119
119
  expect(Employee.count).to be >= 300024
120
120
  th.join
121
- }.to raise_error
121
+ }.to raise_error(/unhandled error/)
122
122
  end
123
123
 
124
124
  it 'op update' do
@@ -188,51 +188,7 @@ describe 'activerecord-mysql-reconnect' do
188
188
  end
189
189
  end
190
190
 
191
- it 'retryable_transaction' do
192
- unless /MyISAM/i =~ ENV['ACTIVERECORD_MYSQL_RECONNECT_ENGINE']
193
- expect {
194
- expect(Employee.count).to eq(300024)
195
-
196
- mysql2_error('MySQL server has gone away') do
197
- ActiveRecord::Base.retryable_transaction do
198
- emp = Employee.create(
199
- :emp_no => 1,
200
- :birth_date => Time.now,
201
- :first_name => 'Scott',
202
- :last_name => 'Tiger',
203
- :hire_date => Time.now
204
- )
205
- expect(emp.id).to eq(300025)
206
- expect(emp.emp_no).to eq(1)
207
- mysql_restart
208
- emp = Employee.create(
209
- :emp_no => 2,
210
- :birth_date => Time.now,
211
- :first_name => 'Scott',
212
- :last_name => 'Tiger',
213
- :hire_date => Time.now
214
- )
215
- expect(emp.id).to eq(300026)
216
- expect(emp.emp_no).to eq(2)
217
- mysql_restart
218
- emp = Employee.create(
219
- :emp_no => 3,
220
- :birth_date => Time.now,
221
- :first_name => 'Scott',
222
- :last_name => 'Tiger',
223
- :hire_date => Time.now
224
- )
225
- expect(emp.id).to eq(300027)
226
- expect(emp.emp_no).to eq(3)
227
- end
228
- end
229
-
230
- expect(Employee.count).to eq(300027)
231
- }.to_not raise_error
232
- end
233
- end
234
-
235
- it 'retry new connection' do
191
+ it 'retry new connection' do
236
192
  expect {
237
193
  ActiveRecord::Base.clear_all_connections!
238
194
  mysql_restart
metadata CHANGED
@@ -1,97 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-mysql-reconnect
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.9
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-28 00:00:00.000000000 Z
11
+ date: 2016-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mysql2
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '1.3'
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '1.3'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: 3.0.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: 3.0.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rspec-instafail
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  description: It is the library to reconnect automatically when ActiveRecord is disconnected
@@ -102,9 +102,9 @@ executables: []
102
102
  extensions: []
103
103
  extra_rdoc_files: []
104
104
  files:
105
- - .gitignore
106
- - .rspec
107
- - .travis.yml
105
+ - ".gitignore"
106
+ - ".rspec"
107
+ - ".travis.yml"
108
108
  - ChangeLog
109
109
  - Gemfile
110
110
  - LICENSE.txt
@@ -113,13 +113,11 @@ files:
113
113
  - activerecord-mysql-reconnect.gemspec
114
114
  - lib/activerecord-mysql-reconnect.rb
115
115
  - lib/activerecord/mysql/reconnect.rb
116
- - lib/activerecord/mysql/reconnect/abstract_adapter_ext.rb
117
116
  - lib/activerecord/mysql/reconnect/abstract_mysql_adapter_ext.rb
118
117
  - lib/activerecord/mysql/reconnect/base_ext.rb
119
118
  - lib/activerecord/mysql/reconnect/connection_pool_ext.rb
120
119
  - lib/activerecord/mysql/reconnect/mysql2_adapter_ext.rb
121
120
  - lib/activerecord/mysql/reconnect/version.rb
122
- - run-all-tests.sh
123
121
  - spec/activerecord-mysql-reconnect_spec.rb
124
122
  - spec/employees.sql
125
123
  - spec/spec_helper.rb
@@ -133,17 +131,17 @@ require_paths:
133
131
  - lib
134
132
  required_ruby_version: !ruby/object:Gem::Requirement
135
133
  requirements:
136
- - - '>='
134
+ - - ">="
137
135
  - !ruby/object:Gem::Version
138
136
  version: '0'
139
137
  required_rubygems_version: !ruby/object:Gem::Requirement
140
138
  requirements:
141
- - - '>='
139
+ - - ">="
142
140
  - !ruby/object:Gem::Version
143
141
  version: '0'
144
142
  requirements: []
145
143
  rubyforge_project:
146
- rubygems_version: 2.0.14
144
+ rubygems_version: 2.4.5.1
147
145
  signing_key:
148
146
  specification_version: 4
149
147
  summary: It is the library to reconnect automatically when ActiveRecord is disconnected
@@ -1,3 +0,0 @@
1
- class ActiveRecord::ConnectionAdapters::AbstractAdapter
2
- # XXX:
3
- end
@@ -1,46 +0,0 @@
1
- #!/bin/bash
2
- set -e
3
-
4
- # sysvbanner
5
- # https://github.com/uffejakobsen/sysvbanner
6
-
7
- banner `mysqld --version`
8
-
9
- export ACTIVERECORD_MYSQL_RECONNECT_ENGINE=InnoDB
10
- banner $ACTIVERECORD_MYSQL_RECONNECT_ENGINE
11
-
12
- sed -i.bak "s/spec.add_dependency 'activerecord'.*/spec.add_dependency 'activerecord', '= 3.2.14'/" activerecord-mysql-reconnect.gemspec
13
- bundle install -j4
14
- banner `bundle exec ruby -e 'require "active_record"; puts ActiveRecord::VERSION::STRING'`
15
- bundle exec rake
16
-
17
- sed -i.bak "s/spec.add_dependency 'activerecord'.*/spec.add_dependency 'activerecord', '~> 3.2.14'/" activerecord-mysql-reconnect.gemspec
18
- bundle install -j4
19
- banner `bundle exec ruby -e 'require "active_record"; puts ActiveRecord::VERSION::STRING'`
20
- bundle exec rake
21
-
22
- sed -i.bak "s/spec.add_dependency 'activerecord'.*/spec.add_dependency 'activerecord', '~> 4.0'/" activerecord-mysql-reconnect.gemspec
23
- bundle install -j4
24
- banner `bundle exec ruby -e 'require "active_record"; puts ActiveRecord::VERSION::STRING'`
25
- bundle exec rake
26
-
27
- export ACTIVERECORD_MYSQL_RECONNECT_ENGINE=MyISAM
28
- banner $ACTIVERECORD_MYSQL_RECONNECT_ENGINE
29
-
30
- sed -i.bak "s/spec.add_dependency 'activerecord'.*/spec.add_dependency 'activerecord', '= 3.2.14'/" activerecord-mysql-reconnect.gemspec
31
- bundle install -j4
32
- banner `bundle exec ruby -e 'require "active_record"; puts ActiveRecord::VERSION::STRING'`
33
- bundle exec rake
34
-
35
- sed -i.bak "s/spec.add_dependency 'activerecord'.*/spec.add_dependency 'activerecord', '~> 3.2.14'/" activerecord-mysql-reconnect.gemspec
36
- bundle install -j4
37
- banner `bundle exec ruby -e 'require "active_record"; puts ActiveRecord::VERSION::STRING'`
38
- bundle exec rake
39
-
40
- sed -i.bak "s/spec.add_dependency 'activerecord'.*/spec.add_dependency 'activerecord', '~> 4.0'/" activerecord-mysql-reconnect.gemspec
41
- bundle install -j4
42
- banner `bundle exec ruby -e 'require "active_record"; puts ActiveRecord::VERSION::STRING'`
43
- bundle exec rake
44
-
45
- git checkout activerecord-mysql-reconnect.gemspec
46
- rm *.bak spec/*.bak