rails-pg-adapter 0.1.10 → 0.1.12

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: b67a7180bcec7946a649f7bdb65f8229fad8ce79781fbd2f3d35a29ab36ea11c
4
- data.tar.gz: 0716b88ad57d47d6ac13e236689ca0e75a3523d499a25926e6160c1f095046d2
3
+ metadata.gz: b84b17ac8e8008860499554d460faba310b74cad9ab1121a47ae3546ce07869e
4
+ data.tar.gz: f60cd6ef5bd5a9d87ef55d51840d75ae0142ef3c3d86e14aed523784b2147b57
5
5
  SHA512:
6
- metadata.gz: 5339a3671b5ca35033959dee30c970c4cda87da611cbe3497195e3dd65872a5d4ba7e4b6610ed181d7ece69cfed1d9ec6508bd7ec7ae5caa2893fb98ea2fc230
7
- data.tar.gz: 2f7369561949f038a9a4fe56d19f4dc0c256747b959d4ef1e6c5d19449b9f53ec003038418a988fa421614d973536a31343698304db7dea3d4cb4d4aee6f8e54
6
+ metadata.gz: 7bc8312c2fa2ab807ebcc197b1f3e0e61bc700fe7b451e436c6667470f2df0a7300c773715ea7cc15fac75b0dba322ef67dedcedc135d479a139b1d4ec251ec0
7
+ data.tar.gz: dfb8e3d337d0905639f67cfb84101b0bad1232152d838238373b4ac0abca0e5256a174585b8866f424119b157597e5730e0e03a48f14989d67c8c9a92f0e8491
data/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## [0.1.12] - 2023-05-08
2
+
3
+ - Slight refactor and reduce multiple disconnect attempts
4
+
5
+ ## [0.1.11] - 2023-05-08
6
+
7
+ - Attempt a re-connect before a retry
8
+
9
+ ## [0.1.10] - 2023-05-04
10
+
11
+ - Handle Connection refused
12
+
1
13
  ## [0.1.9] - 2023-05-04
2
14
 
3
15
  - Retry on too many connections error as well
@@ -43,42 +43,52 @@ module RailsPgAdapter
43
43
 
44
44
  def exec_cache(*args)
45
45
  sleep_times = ::RailsPgAdapter.configuration.reconnect_with_backoff.dup
46
+ query, _ = args
46
47
  begin
47
48
  super(*args)
48
49
  rescue ::ActiveRecord::StatementInvalid,
49
50
  ::ActiveRecord::ConnectionNotEstablished,
50
51
  ::ActiveRecord::NoDatabaseError => e
51
52
  raise unless ::RailsPgAdapter::Patch.supported_errors?(e)
53
+ handle_schema_cache_error(e)
54
+ handle_activerecord_error(e)
55
+ raise unless try_reconnect?(e)
52
56
 
53
- if try_reconnect?(e)
54
- sleep_time = sleep_times.shift
55
- handle_error(e) unless sleep_time
56
- warn("Retry query failed, retrying again in #{sleep_time} sec.")
57
+ sleep_time = sleep_times.shift
58
+ if sleep_time
59
+ warn("Retry query failed, retrying again in #{sleep_time} sec. Retrying: #{query}")
57
60
  sleep(sleep_time)
61
+ connect
58
62
  retry
59
63
  else
60
- handle_error(e)
64
+ handle_activerecord_error(e)
65
+ raise
61
66
  end
62
67
  end
63
68
  end
64
69
 
65
70
  def exec_no_cache(*args)
66
71
  sleep_times = ::RailsPgAdapter.configuration.reconnect_with_backoff.dup
72
+ query, _ = args
67
73
  begin
68
74
  super(*args)
69
75
  rescue ::ActiveRecord::StatementInvalid,
70
76
  ::ActiveRecord::ConnectionNotEstablished,
71
77
  ::ActiveRecord::NoDatabaseError => e
72
78
  raise unless ::RailsPgAdapter::Patch.supported_errors?(e)
79
+ handle_schema_cache_error(e)
80
+ handle_activerecord_error(e)
81
+ raise unless try_reconnect?(e)
73
82
 
74
- if try_reconnect?(e)
75
- sleep_time = sleep_times.shift
76
- handle_error(e) unless sleep_time
77
- warn("Retry query failed, retrying again in #{sleep_time} sec.")
83
+ sleep_time = sleep_times.shift
84
+ if sleep_time
85
+ warn("Retry query failed, retrying again in #{sleep_time} sec. Retrying: #{query}")
78
86
  sleep(sleep_time)
87
+ connect
79
88
  retry
80
89
  else
81
- handle_error(e)
90
+ handle_activerecord_error(e)
91
+ raise
82
92
  end
83
93
  end
84
94
  end
@@ -87,28 +97,21 @@ module RailsPgAdapter
87
97
  return false if in_transaction?
88
98
  return false unless ::RailsPgAdapter::Patch.failover_error?(e.message)
89
99
  return false unless ::RailsPgAdapter.reconnect_with_backoff?
90
-
91
- begin
92
- disconnect_conn!
93
- true
94
- rescue ::ActiveRecord::ConnectionNotEstablished
95
- false
96
- end
100
+ true
97
101
  end
98
102
 
99
- def handle_error(e)
100
- if ::RailsPgAdapter::Patch.failover_error?(e.message)
101
- warn("clearing connections due to #{e} - #{e.message}")
102
- disconnect_conn!
103
- raise(e)
104
- end
103
+ def handle_activerecord_error(e)
104
+ return unless ::RailsPgAdapter::Patch.failover_error?(e.message)
105
+ warn("clearing connections due to #{e} - #{e.message}")
106
+ disconnect_conn!
107
+ end
105
108
 
109
+ def handle_schema_cache_error(e)
106
110
  return unless ::RailsPgAdapter::Patch.missing_column_error?(e.message)
107
-
108
111
  warn("clearing column information due to #{e} - #{e.message}")
109
112
 
110
113
  internal_clear_schema_cache!
111
- raise
114
+ raise(e)
112
115
  end
113
116
 
114
117
  def disconnect_conn!
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsPgAdapter
4
- VERSION = "0.1.10"
4
+ VERSION = "0.1.12"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-pg-adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.10
4
+ version: 0.1.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tines Engineering
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-04 00:00:00.000000000 Z
11
+ date: 2023-05-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails