manageiq-postgres_ha_admin 3.2.0 → 3.2.1

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: 56101e65dae001ffb46cd7694fbef68783b68e9a65acf249be6442de3bfe9946
4
- data.tar.gz: 7168416de251ecc47a6f18b74ee670aff0e064f856f4977b9ba326251db6908e
3
+ metadata.gz: 7c6e01b8391b55a231ec81a0e050a97b2ccd02cc1fb576dc9272021f2130e593
4
+ data.tar.gz: d0b27f3b48ab6e843175d740e98bc6758d3facb9815c97dfa1de3147072f2fe2
5
5
  SHA512:
6
- metadata.gz: ca051fa5381377b6252a323a3f77befb7f544d155d86a5b749409a58f7af68d6d2d8cb1c248d8bea6ebbeab8f45a57b43bf87deca082f43720642b7b47f505c8
7
- data.tar.gz: 4d32d6edb84ff1cdf9d4448fbc1239962c7b24382d31e143b8169f00156947ea6160a5e63b54647c7c94dee0e4d838320f85f1a2434ac736d7dc8019b7187cc9
6
+ metadata.gz: dad10a7c85d3d5a30ced79733e407a84584fc3cd32ff6c0c77350cf3f84cfa3f43206ad2e806499ba8f28f6804296f8c7c4d45fe6ccb4fc09899ce62ca388540
7
+ data.tar.gz: 8b80044d67bf6f6215f59f3e21a9c88b9b32fb8d8eb402881e582a7c869eb25d81409076d4dde8def21778e831b391bd43704384a0ee317c5b9f16caa549f3af
data/CHANGELOG.md CHANGED
@@ -5,6 +5,10 @@ This project adheres to [Semantic Versioning](http://semver.org/).
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [3.2.1] - 2023-03-22
9
+ ### Changed
10
+ - Improve failover logging [#39](https://github.com/ManageIQ/manageiq-postgres_ha_admin/pull/39)
11
+
8
12
  ## [3.2.0] - 2022-09-26
9
13
  ### Added
10
14
  - Add simple prefix to all log lines [#38](https://github.com/ManageIQ/manageiq-postgres_ha_admin/pull/38)
@@ -61,7 +65,8 @@ This project adheres to [Semantic Versioning](http://semver.org/).
61
65
  ### Changed
62
66
  - Make changes for upgrading repmgr to version 4 [#4](https://github.com/ManageIQ/manageiq-postgres_ha_admin/pull/4)
63
67
 
64
- [Unreleased]: https://github.com/ManageIQ/manageiq-postgres_ha_admin/compare/v3.2.0...master
68
+ [Unreleased]: https://github.com/ManageIQ/manageiq-postgres_ha_admin/compare/v3.2.1...master
69
+ [3.2.1]: https://github.com/ManageIQ/manageiq-postgres_ha_admin/compare/v3.2.0...v3.2.1
65
70
  [3.2.0]: https://github.com/ManageIQ/manageiq-postgres_ha_admin/compare/v3.1.4...v3.2.0
66
71
  [3.1.4]: https://github.com/ManageIQ/manageiq-postgres_ha_admin/compare/v3.1.3...v3.1.4
67
72
  [3.1.3]: https://github.com/ManageIQ/manageiq-postgres_ha_admin/compare/v3.1.2...v3.1.3
@@ -26,23 +26,20 @@ module PostgresHaAdmin
26
26
  begin
27
27
  connection = pg_connection(handler.read)
28
28
  if connection
29
- server_store.update_servers(connection)
29
+ server_store.update_servers(connection, handler.name)
30
30
  connection.finish
31
31
  next
32
32
  end
33
33
 
34
+ log_settings
35
+ server_store.log_current_server_store(handler.name)
34
36
  logger.error("#{log_prefix(__callee__)} Primary Database is not available for #{handler.name}. Starting to execute failover...")
35
37
  handler.do_before_failover
36
38
 
37
39
  new_conn_info = execute_failover(handler, server_store)
38
40
 
39
- if new_conn_info
40
- # Upon success, we pass a connection hash
41
- handler.do_after_failover(new_conn_info)
42
- else
43
- # Add failover_failed hook if we have a use case in the future
44
- logger.error("#{log_prefix(__callee__)} Failover failed")
45
- end
41
+ # Upon success, we pass a connection hash
42
+ handler.do_after_failover(new_conn_info) if new_conn_info
46
43
  rescue => e
47
44
  logger.error("#{log_prefix(__callee__)} Received #{e.class} error while monitoring #{handler.name}: #{e.message}")
48
45
  logger.error(e.backtrace)
@@ -70,6 +67,10 @@ module PostgresHaAdmin
70
67
 
71
68
  private
72
69
 
70
+ def log_settings
71
+ logger.info("#{log_prefix(__callee__)} Current HA settings: FAILOVER_ATTEMPTS=#{@failover_attempts} DB_CHECK_FREQUENCY=#{@db_check_frequency} FAILOVER_CHECK_FREQUENCY=#{@failover_check_frequency}")
72
+ end
73
+
73
74
  def initialize_settings(ha_admin_yml_file)
74
75
  ha_admin_yml = {}
75
76
  begin
@@ -81,7 +82,7 @@ module PostgresHaAdmin
81
82
  @failover_attempts = ha_admin_yml['failover_attempts'] || FAILOVER_ATTEMPTS
82
83
  @db_check_frequency = ha_admin_yml['db_check_frequency'] || DB_CHECK_FREQUENCY
83
84
  @failover_check_frequency = ha_admin_yml['failover_check_frequency'] || FAILOVER_CHECK_FREQUENCY
84
- logger.info("#{log_prefix(__callee__)} FAILOVER_ATTEMPTS=#{@failover_attempts} DB_CHECK_FREQUENCY=#{@db_check_frequency} FAILOVER_CHECK_FREQUENCY=#{@failover_check_frequency}")
85
+ log_settings
85
86
  end
86
87
 
87
88
  def any_known_standby?(handler, server_store)
@@ -97,7 +98,7 @@ module PostgresHaAdmin
97
98
  # "Standby in recovery"
98
99
  # "Exhausted all failover retry attempts" exceptions
99
100
  unless any_known_standby?(handler, server_store)
100
- logger.error("#{log_prefix(__callee__)} Cannot attempt failover without a known active standby. Please verify the database.yml and ensure the database is started.")
101
+ logger.error("#{log_prefix(__callee__)} Cannot attempt failover without a known active standby for #{handler.name}. Please verify the database.yml and ensure the database is started.")
101
102
  return false
102
103
  end
103
104
 
@@ -105,18 +106,20 @@ module PostgresHaAdmin
105
106
  with_each_standby_connection(handler, server_store) do |connection, params|
106
107
  next if database_in_recovery?(connection)
107
108
  next unless server_store.host_is_primary?(params[:host], connection)
108
- logger.info("#{log_prefix(__callee__)} Failing over to server using conninfo: #{params.reject { |k, _v| k == :password }}")
109
- server_store.update_servers(connection)
109
+ logger.info("#{log_prefix(__callee__)} Failing over for #{handler.name} to server using conninfo: #{server_store.sanitized_connection_parameters(params)}")
110
+ server_store.update_servers(connection, handler.name)
110
111
  handler.write(params)
111
112
  return params
112
113
  end
113
114
  sleep(failover_check_frequency)
114
115
  end
116
+ logger.error("#{log_prefix(__callee__)} Failover failed for #{handler.name}")
115
117
  false
116
118
  end
117
119
 
118
120
  def with_each_standby_connection(handler, server_store)
119
121
  active_servers_conninfo(handler, server_store).each do |params|
122
+ logger.info("#{log_prefix(__callee__)} Checking active server for #{handler.name} using conninfo: #{server_store.sanitized_connection_parameters(params)}")
120
123
  connection = pg_connection(params)
121
124
  next if connection.nil?
122
125
  begin
@@ -22,10 +22,11 @@ module PostgresHaAdmin
22
22
  end
23
23
  end
24
24
 
25
- def update_servers(connection)
25
+ def update_servers(connection, handler_name = "unspecified handler")
26
26
  new_servers = query_repmgr(connection)
27
27
  if servers_changed?(new_servers)
28
- logger.info("#{log_prefix(__callee__)} Updating servers cache to #{new_servers}")
28
+ log_current_server_store(handler_name)
29
+ logger.info("#{log_prefix(__callee__)} Updating servers cache to #{sanitized_servers_array(new_servers)} for #{handler_name}")
29
30
  @servers = new_servers
30
31
  end
31
32
  rescue IOError => err
@@ -42,6 +43,18 @@ module PostgresHaAdmin
42
43
  false
43
44
  end
44
45
 
46
+ def log_current_server_store(handler_name)
47
+ logger.info("#{log_prefix(__callee__)} Current servers cache: #{sanitized_servers_array(@servers)} for #{handler_name}")
48
+ end
49
+
50
+ def sanitized_servers_array(server_array)
51
+ server_array.collect { |p| sanitized_connection_parameters(p) }
52
+ end
53
+
54
+ def sanitized_connection_parameters(params)
55
+ params.reject { |k, _v| k.to_s == "password" }
56
+ end
57
+
45
58
  private
46
59
 
47
60
  def servers_changed?(new_servers)
@@ -1,5 +1,5 @@
1
1
  module ManageIQ
2
2
  module PostgresHaAdmin
3
- VERSION = '3.2.0'.freeze
3
+ VERSION = '3.2.1'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: manageiq-postgres_ha_admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0
4
+ version: 3.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ManageIQ Developers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-26 00:00:00.000000000 Z
11
+ date: 2023-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -209,7 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
209
209
  - !ruby/object:Gem::Version
210
210
  version: '0'
211
211
  requirements: []
212
- rubygems_version: 3.3.18
212
+ rubygems_version: 3.2.33
213
213
  signing_key:
214
214
  specification_version: 4
215
215
  summary: ManageIQ Postgres H.A. Admin