maria_db_cluster_pool 0.0.9 → 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f160b96f54605a291e71690da6b671debc122d9b
4
+ data.tar.gz: 37ea09c465363675fb3e9f9c0de0e5347018996e
5
+ SHA512:
6
+ metadata.gz: d65356f3e7702e384ddd20f058814f752a3edc188bd0f604e3ecde1910803879984eae4771242152007f5497a005653ecbedeed1575c965b71f6b7014b883a29
7
+ data.tar.gz: 47c2390ad12fe7982fc7a7c6c8723aa1fd8e623e055a3b47f38040696e3b32dd9a99b7de378f01ab8a67261ed79949144411d83c861349de758f97f73a3c0923
data/Rakefile CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'rubygems'
2
2
  require 'rake'
3
3
  require 'yaml'
4
+ require "bundler/gem_tasks"
4
5
 
5
6
  desc 'Default: run unit tests.'
6
7
  task :default => :test
@@ -10,7 +11,7 @@ begin
10
11
  require 'rspec/core/rake_task'
11
12
  desc 'Run the unit tests'
12
13
  RSpec::Core::RakeTask.new(:test)
13
-
14
+
14
15
  namespace :test do
15
16
  desc "Run all tests including for all database adapters"
16
17
  task :all do
@@ -58,4 +59,4 @@ rescue LoadError
58
59
  task :test do
59
60
  STDERR.puts "You must have rspec >= 2.0 to run the tests"
60
61
  end
61
- end
62
+ end
@@ -16,8 +16,9 @@ module ActiveRecord
16
16
  begin
17
17
  establish_adapter(server_config[:adapter])
18
18
  conn = send("#{server_config[:adapter]}_connection".to_sym, server_config)
19
- conn.class.send(:include, MariaDbClusterPool::ConnectTimeout) unless conn.class.include?(MariaDbClusterPool::ConnectTimeout)
20
- conn.connect_timeout = server_config[:connect_timeout]
19
+ # conn.class.send(:include, MariaDbClusterPool::ConnectTimeout) unless conn.class.include?(MariaDbClusterPool::ConnectTimeout)
20
+ # conn.connect_timeout = server_config[:connect_timeout]
21
+
21
22
  pool_connections << conn
22
23
  pool_weights[conn] = server_config[:pool_weight]
23
24
  rescue Exception => e
@@ -30,7 +31,7 @@ module ActiveRecord
30
31
 
31
32
  @maria_db_cluster_pool_classes ||= {}
32
33
  klass = @maria_db_cluster_pool_classes[pool_connections[0].class]
33
- unless klass
34
+ unless klass.present?
34
35
  klass = ActiveRecord::ConnectionAdapters::MariaDbClusterPoolAdapter.adapter_class(pool_connections[0])
35
36
  @maria_db_cluster_pool_classes[pool_connections[0].class] = klass
36
37
  end
@@ -46,10 +47,10 @@ module ActiveRecord
46
47
  require 'rubygems'
47
48
  gem "activerecord-#{adapter}-adapter"
48
49
  require "active_record/connection_adapters/#{adapter}_adapter"
49
- rescue LoadError
50
+ rescue LoadError => e
50
51
  begin
51
52
  require "active_record/connection_adapters/#{adapter}_adapter"
52
- rescue LoadError
53
+ rescue LoadError => ee
53
54
  raise "Please install the #{adapter} adapter: `gem install activerecord-#{adapter}-adapter` (#{$!})"
54
55
  end
55
56
  end
@@ -60,6 +61,8 @@ module ActiveRecord
60
61
  end
61
62
  end
62
63
  end
64
+
65
+ # include(MariaDbClusterPoolAdapter) unless include?(MariaDbClusterPoolAdapter)
63
66
  end
64
67
 
65
68
  module ConnectionAdapters
@@ -112,11 +115,12 @@ module ActiveRecord
112
115
  end
113
116
 
114
117
  def initialize(connection, logger, connections, pool_weights)
115
- super(connection, logger)
116
-
118
+ # @available_connections = connections.dup.freeze
119
+ @connections = connections.dup.freeze
117
120
  @available_connections = []
118
121
  @master_connection = connection
119
- @connections = connections.dup.freeze
122
+
123
+ super(connection, logger)
120
124
 
121
125
  pool_weights.each_pair do |conn, weight|
122
126
  @available_connections[weight] = AvailableConnection.new(conn)
@@ -174,7 +178,7 @@ module ActiveRecord
174
178
 
175
179
  class DatabaseConnectionError < StandardError
176
180
  end
177
-
181
+
178
182
  # This simple class puts an expire time on an array of connections. It is used so the a connection
179
183
  # to a down database won't try to reconnect over and over.
180
184
  class AvailableConnection
@@ -227,7 +231,30 @@ module ActiveRecord
227
231
  end
228
232
 
229
233
  @available_connections
230
-
234
+ # available = @available_connections.last
235
+ # if available.expired?
236
+ # begin
237
+ # @logger.info("Adding dead database connection back to the pool") if @logger
238
+ # available.reconnect!
239
+ # rescue => e
240
+ # # Couldn't reconnect so try again in a little bit
241
+ # if @logger
242
+ # @logger.warn("Failed to reconnect to database when adding connection back to the pool")
243
+ # @logger.warn(e)
244
+ # end
245
+ # available.expires = 30.seconds.from_now
246
+ # return available.connections
247
+ # end
248
+ #
249
+ # # If reconnect is successful, the connection will have been re-added to @available_read_connections list,
250
+ # # so let's pop this old version of the connection
251
+ # @available_connections.pop
252
+ #
253
+ # # Now we'll try again after either expiring our bad connection or re-adding our good one
254
+ # return available_connections
255
+ # else
256
+ # return available.connections
257
+ # end
231
258
  end
232
259
 
233
260
  def reset_available_connections
metadata CHANGED
@@ -1,79 +1,93 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: maria_db_cluster_pool
3
- version: !ruby/object:Gem::Version
4
- hash: 13
5
- prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 9
10
- version: 0.0.9
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
11
5
  platform: ruby
12
- authors:
13
- - "Ren\xC3\xA9 Schultz Madsen"
6
+ authors:
7
+ - René Schultz Madsen
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2014-11-19 00:00:00 +01:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
11
+ date: 2016-06-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
22
14
  name: activerecord
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
27
17
  - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 21
30
- segments:
31
- - 2
32
- - 3
33
- - 11
34
- version: 2.3.11
18
+ - !ruby/object:Gem::Version
19
+ version: 3.0.20
35
20
  type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: rake
39
21
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
43
24
  - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 49
46
- segments:
47
- - 0
48
- - 8
49
- - 7
50
- version: 0.8.7
51
- type: :runtime
52
- version_requirements: *id002
53
- - !ruby/object:Gem::Dependency
25
+ - !ruby/object:Gem::Version
26
+ version: 3.0.20
27
+ - !ruby/object:Gem::Dependency
54
28
  name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '2.0'
34
+ type: :development
55
35
  prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
59
38
  - - ">="
60
- - !ruby/object:Gem::Version
61
- hash: 3
62
- segments:
63
- - 0
64
- version: "0"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: sqlite3
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
65
48
  type: :development
66
- version_requirements: *id003
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: mysql2
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pg
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
67
83
  description: This gem add support for the Maria DB Galera Cluster setup.
68
84
  email: rm@microting.com
69
85
  executables: []
70
-
71
86
  extensions: []
72
-
73
- extra_rdoc_files:
87
+ extra_rdoc_files:
74
88
  - MIT-LICENSE
75
89
  - README.md
76
- files:
90
+ files:
77
91
  - MIT-LICENSE
78
92
  - README.md
79
93
  - Rakefile
@@ -81,39 +95,29 @@ files:
81
95
  - lib/maria_db_cluster_pool.rb
82
96
  - lib/maria_db_cluster_pool/arel_compiler.rb
83
97
  - lib/maria_db_cluster_pool/connect_timeout.rb
84
- has_rdoc: true
85
98
  homepage: https://github.com/renemadsen/maria_db_cluster_pool
86
- licenses:
99
+ licenses:
87
100
  - MIT
101
+ metadata: {}
88
102
  post_install_message:
89
103
  rdoc_options: []
90
-
91
- require_paths:
104
+ require_paths:
92
105
  - lib
93
- required_ruby_version: !ruby/object:Gem::Requirement
94
- none: false
95
- requirements:
106
+ required_ruby_version: !ruby/object:Gem::Requirement
107
+ requirements:
96
108
  - - ">="
97
- - !ruby/object:Gem::Version
98
- hash: 3
99
- segments:
100
- - 0
101
- version: "0"
102
- required_rubygems_version: !ruby/object:Gem::Requirement
103
- none: false
104
- requirements:
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ required_rubygems_version: !ruby/object:Gem::Requirement
112
+ requirements:
105
113
  - - ">="
106
- - !ruby/object:Gem::Version
107
- hash: 3
108
- segments:
109
- - 0
110
- version: "0"
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
111
116
  requirements: []
112
-
113
117
  rubyforge_project:
114
- rubygems_version: 1.5.3
118
+ rubygems_version: 2.2.2
115
119
  signing_key:
116
- specification_version: 3
117
- summary: Add support for master/master database clusters in ActiveRecord to improve performance.
120
+ specification_version: 4
121
+ summary: Add support for master/master database clusters in ActiveRecord to improve
122
+ performance.
118
123
  test_files: []
119
-