fibered_mysql2 0.1.1 → 0.1.2

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
  SHA256:
3
- metadata.gz: 48308ffbe571baaa919c2f198d761657f9f77b95a87f67c3ef7493433a3e4a6a
4
- data.tar.gz: c5893a679a730bfd7e1a088a06f86b82d65c95da9b9171fcb419f27298ca268c
3
+ metadata.gz: 03d7285011a1fd36ca7d030a233bdeb46900e44c512161abd0241c653b5cabd4
4
+ data.tar.gz: 5ec6253f493c773a11207664df054dab32f5cfaf996fbb4706bb76d89cd04b1c
5
5
  SHA512:
6
- metadata.gz: af9979eb4a038db1fcbec58dc5a88d617a71271c1588ff0717a4792f5442b3c59d82e9bc8d76b59821179099c87c8387a72bbbcdb096d10991320e7001c4bda8
7
- data.tar.gz: 05a912e4b5504aebfb6a0ad5e8a29e72cb8e739066279982ead7aa89ca97b9308f2144ed6142833cba84ad7939c8ee0d364e71065606221ebe52cf4ee35ce0e1
6
+ metadata.gz: 890bb36f3cbd96021d0afa0d3ce06b1d02765afc8be3d7335d5b6234ec6b6e11b58a24b4b499d0332a2a01c778757dd5c880af6291e7f535a740e2da9be2ef62
7
+ data.tar.gz: 0cc5c22298ca1bd4c6c443738b6aa1c306d412894141660f1ce49e4dc592474c172c014073b0a6e088506d3422c8983b21b00a9bd8bd018fd75a1b0904f33782
data/CHANGELOG.md CHANGED
@@ -4,6 +4,10 @@ Inspired by [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
5
  Note: this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [0.1.2] - 2021-06-16
8
+ ### Fixed
9
+ - Added checking to be certain that @owner is never overwritten with a non-Fiber by another mixin.
10
+
7
11
  ## [0.1.1] - 2021-02-12
8
12
  ### Fixed
9
13
  - Fixed bug with Rails 5+ adapter where connections that have `steal!` called on them were not having their owner updated to the current Fiber, which would then cause an exception when trying to expire the connection (this showed up with the Rails 5 `ConnectionPool::Reaper` that reaps unused connections)
@@ -19,5 +23,6 @@ Note: this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0
19
23
  - Added TravisCI unit test pipeline.
20
24
  - Added coverage reports via Coveralls.
21
25
 
26
+ [0.1.2]: https://github.com/Invoca/fibered_mysql2/compare/v0.1.1..v0.1.2
22
27
  [0.1.1]: https://github.com/Invoca/fibered_mysql2/compare/v0.1.0..v0.1.1
23
28
  [0.1.0]: https://github.com/Invoca/fibered_mysql2/tree/v0.1.0
data/Gemfile CHANGED
@@ -8,6 +8,7 @@ gemspec
8
8
  gem 'appraisal'
9
9
  gem 'bundler', '~> 1.8'
10
10
  gem 'coveralls', require: false
11
+ gem 'mimemagic', '~> 0.3', git: 'git@github.com:Invoca/mimemagic', ref: 'b084ce8d50c080f5a312156498be21a541fe72a2'
11
12
  gem 'mysql2', '0.4.5'
12
13
  gem 'pry', '~> 0.13'
13
14
  gem 'pry-byebug', '~> 3.9'
data/Gemfile.lock CHANGED
@@ -1,7 +1,14 @@
1
+ GIT
2
+ remote: git@github.com:Invoca/mimemagic
3
+ revision: b084ce8d50c080f5a312156498be21a541fe72a2
4
+ ref: b084ce8d50c080f5a312156498be21a541fe72a2
5
+ specs:
6
+ mimemagic (0.3.5)
7
+
1
8
  PATH
2
9
  remote: .
3
10
  specs:
4
- fibered_mysql2 (0.1.1)
11
+ fibered_mysql2 (0.1.2)
5
12
  em-synchrony (~> 1.0)
6
13
  rails (>= 4.2, < 7)
7
14
 
@@ -63,14 +70,14 @@ GEM
63
70
  minitest (~> 5.1)
64
71
  tzinfo (~> 1.1)
65
72
  zeitwerk (~> 2.2, >= 2.2.2)
66
- appraisal (2.3.0)
73
+ appraisal (2.4.0)
67
74
  bundler
68
75
  rake
69
76
  thor (>= 0.14.0)
70
77
  builder (3.2.4)
71
78
  byebug (11.1.3)
72
79
  coderay (1.1.3)
73
- concurrent-ruby (1.1.7)
80
+ concurrent-ruby (1.1.8)
74
81
  coveralls (0.8.23)
75
82
  json (>= 1.8, < 3)
76
83
  simplecov (~> 0.16.1)
@@ -82,14 +89,14 @@ GEM
82
89
  docile (1.3.2)
83
90
  em-synchrony (1.0.6)
84
91
  eventmachine (>= 1.0.0.beta.1)
85
- erubi (1.9.0)
92
+ erubi (1.10.0)
86
93
  eventmachine (1.2.7)
87
94
  globalid (0.4.2)
88
95
  activesupport (>= 4.2.0)
89
- i18n (1.8.5)
96
+ i18n (1.8.7)
90
97
  concurrent-ruby (~> 1.0)
91
98
  json (2.3.1)
92
- loofah (2.7.0)
99
+ loofah (2.8.0)
93
100
  crass (~> 1.0.2)
94
101
  nokogiri (>= 1.5.9)
95
102
  mail (2.7.1)
@@ -97,10 +104,9 @@ GEM
97
104
  marcel (0.3.3)
98
105
  mimemagic (~> 0.3.2)
99
106
  method_source (1.0.0)
100
- mimemagic (0.3.5)
101
107
  mini_mime (1.0.2)
102
108
  mini_portile2 (2.4.0)
103
- minitest (5.14.2)
109
+ minitest (5.14.3)
104
110
  mysql2 (0.4.5)
105
111
  nio4r (2.5.4)
106
112
  nokogiri (1.10.10)
@@ -173,12 +179,12 @@ GEM
173
179
  thread_safe (0.3.6)
174
180
  tins (1.25.0)
175
181
  sync
176
- tzinfo (1.2.7)
182
+ tzinfo (1.2.9)
177
183
  thread_safe (~> 0.1)
178
184
  websocket-driver (0.7.3)
179
185
  websocket-extensions (>= 0.1.0)
180
186
  websocket-extensions (0.1.5)
181
- zeitwerk (2.4.0)
187
+ zeitwerk (2.4.1)
182
188
 
183
189
  PLATFORMS
184
190
  ruby
@@ -188,6 +194,7 @@ DEPENDENCIES
188
194
  bundler (~> 1.8)
189
195
  coveralls
190
196
  fibered_mysql2!
197
+ mimemagic (~> 0.3)!
191
198
  mysql2 (= 0.4.5)
192
199
  pry (~> 0.13)
193
200
  pry-byebug (~> 3.9)
@@ -195,4 +202,4 @@ DEPENDENCIES
195
202
  rspec (~> 3.0)
196
203
 
197
204
  BUNDLED WITH
198
- 1.17.2
205
+ 1.17.3
@@ -20,10 +20,10 @@ module FiberedMysql2
20
20
  def lease
21
21
  if in_use?
22
22
  msg = "Cannot lease connection, ".dup
23
- if @owner == Fiber.current
23
+ if owner_fiber == Fiber.current
24
24
  msg << "it is already leased by the current fiber."
25
25
  else
26
- msg << "it is already in use by a different fiber: #{@owner}. " \
26
+ msg << "it is already in use by a different fiber: #{owner_fiber}. " \
27
27
  "Current fiber: #{Fiber.current}."
28
28
  end
29
29
  raise ::ActiveRecord::ActiveRecordError, msg
@@ -37,9 +37,9 @@ module FiberedMysql2
37
37
  # Because we are actively releasing connections from dead fibers, we only want
38
38
  # to enforce that we're expiring the current fibers connection, iff the owner
39
39
  # of the connection is still alive.
40
- if @owner.alive? && @owner != Fiber.current
40
+ if owner_fiber.alive? && owner_fiber != Fiber.current
41
41
  raise ::ActiveRecord::ActiveRecordError, "Cannot expire connection, " \
42
- "it is owned by a different fiber: #{@owner}. " \
42
+ "it is owned by a different fiber: #{owner_fiber}. " \
43
43
  "Current fiber: #{Fiber.current}."
44
44
  end
45
45
 
@@ -52,8 +52,8 @@ module FiberedMysql2
52
52
 
53
53
  def steal!
54
54
  if in_use?
55
- if @owner != Fiber.current
56
- pool.send :remove_connection_from_thread_cache, self, @owner
55
+ if owner_fiber != Fiber.current
56
+ pool.send :remove_connection_from_thread_cache, self, owner_fiber
57
57
 
58
58
  @owner = Fiber.current
59
59
  end
@@ -61,6 +61,13 @@ module FiberedMysql2
61
61
  raise ::ActiveRecord::ActiveRecordError, "Cannot steal connection, it is not currently leased."
62
62
  end
63
63
  end
64
+
65
+ private
66
+
67
+ def owner_fiber
68
+ @owner.is_a?(Fiber) or raise "@owner must be a Fiber! Found #{@owner.inspect}"
69
+ @owner
70
+ end
64
71
  end
65
72
 
66
73
  class FiberedMysql2Adapter < ::ActiveRecord::ConnectionAdapters::EMMysql2Adapter
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FiberedMysql2
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.2"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fibered_mysql2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Invoca Development
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-02-12 00:00:00.000000000 Z
11
+ date: 2021-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: em-synchrony
@@ -44,7 +44,7 @@ dependencies:
44
44
  - - "<"
45
45
  - !ruby/object:Gem::Version
46
46
  version: '7'
47
- description:
47
+ description:
48
48
  email:
49
49
  - development@invoca.com
50
50
  executables: []
@@ -77,7 +77,7 @@ licenses: []
77
77
  metadata:
78
78
  allowed_push_host: https://rubygems.org
79
79
  homepage_uri: https://github.com/Invoca/fibered_mysql2
80
- post_install_message:
80
+ post_install_message:
81
81
  rdoc_options: []
82
82
  require_paths:
83
83
  - lib
@@ -93,7 +93,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
93
93
  version: '0'
94
94
  requirements: []
95
95
  rubygems_version: 3.0.1
96
- signing_key:
96
+ signing_key:
97
97
  specification_version: 4
98
98
  summary: An adapter for fibered mysql2
99
99
  test_files: []