activerecord-mysql-reconnect 0.3.9 → 0.4.0

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