maria_db_cluster_pool 0.0.9 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
-