pgtk 0.34.0 → 0.34.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f4e1d913f72c6d33b8ecdb1cc17487c2ad7dfceae06f897b81cf0b4c12d32278
4
- data.tar.gz: 456a7e3ae4a04891f3c51c0bc32108a30625782db57cca1725dbc4aec20b9363
3
+ metadata.gz: '08b1597d7c03e9dc13920cb5a017212d8d20abf1dfaf035ef2ba0780e65e5b9a'
4
+ data.tar.gz: 33ff4f8d10700ee5d6fd50dfffd554cf5e8ab64f22c64c827cee4b3e56515bf3
5
5
  SHA512:
6
- metadata.gz: 810a9b990e6e040683f02f58932ce480aa250331d1a73c6750e68f9ede1b069a0a63446ce3ecc3971bf07cb5695f2c25ce64d697fe33a4d1d5be18ed5d7b7ae5
7
- data.tar.gz: c2ac270f074f32bab3ce1dc03b7a68b9c5ae17eeccc764d07e379813a665d57b968f6f2de672b9640db31d56e716a7212813e95d6968d8988ff4fd25e375d898
6
+ metadata.gz: '00185a69a1f0e8c7aceb0c565009f04598e6919df83664a42e52dd848a8b73921bf3fe33f460d434fb89b5c2c132732f807e8c4dec531a5c2e4e64489104b955'
7
+ data.tar.gz: 61041c3d7cdd28ad34979e5cb0fd3c319d9113d31e0ad427e1713bd627b4978e6aa7a01aa4bb1ea3d6816c5935ef86ca0e77d1f3e488c69c5bc013e8ffedb905
data/Gemfile.lock CHANGED
@@ -36,7 +36,7 @@ GEM
36
36
  tago (~> 0.1)
37
37
  ellipsized (0.3.0)
38
38
  joined (0.4.0)
39
- json (2.21.1)
39
+ json (2.21.2)
40
40
  language_server-protocol (3.17.0.6)
41
41
  lint_roller (1.1.0)
42
42
  logger (1.7.0)
@@ -88,15 +88,15 @@ GEM
88
88
  loog (> 0)
89
89
  tago (> 0)
90
90
  racc (1.8.1)
91
- rack (3.2.6)
91
+ rack (3.2.7)
92
92
  rainbow (3.1.1)
93
93
  rake (13.4.2)
94
94
  random-port (0.8.2)
95
95
  tago (~> 0.0)
96
96
  regexp_parser (2.12.0)
97
97
  rexml (3.4.4)
98
- rubocop (1.88.2)
99
- json (~> 2.3)
98
+ rubocop (1.90.0)
99
+ json (>= 2.3)
100
100
  language_server-protocol (~> 3.17.0.2)
101
101
  lint_roller (~> 1.1.0)
102
102
  parallel (>= 1.10)
@@ -143,7 +143,7 @@ GEM
143
143
  unicode-emoji (~> 4.1)
144
144
  unicode-emoji (4.2.0)
145
145
  waitutil (0.2.1)
146
- xcop (0.9.0)
146
+ xcop (0.11.2)
147
147
  differ (~> 0.1.2)
148
148
  nokogiri (~> 1.8)
149
149
  rainbow (~> 3.0)
data/lib/pgtk/retry.rb CHANGED
@@ -5,6 +5,7 @@
5
5
 
6
6
  require_relative '../pgtk'
7
7
  require_relative 'impatient'
8
+ require_relative 'pool/busy'
8
9
 
9
10
  # Retry is a decorator for Pool that automatically retries failed SELECT queries.
10
11
  # It provides fault tolerance for transient database errors by retrying read-only
@@ -83,8 +84,12 @@ class Pgtk::Retry
83
84
  end
84
85
 
85
86
  # Execute a SQL query with automatic retry on transient failures.
86
- # Only SELECT queries are retried, since reads are idempotent.
87
- # Non-SELECT queries propagate the original error immediately, even
87
+ # Only SELECT queries are retried, since reads are idempotent. The
88
+ # single exception is Pgtk::Pool::Busy, which is retried for every
89
+ # query type: it is raised while waiting for a free connection, thus
90
+ # the statement provably never reached the server and a second
91
+ # attempt cannot duplicate a write.
92
+ # Other non-SELECT queries propagate the original error immediately, even
88
93
  # on PG::ConnectionBad, because that error can be raised after the
89
94
  # server already received the query but before the acknowledgement
90
95
  # reached the client, and retrying a non-idempotent write could
@@ -100,6 +105,10 @@ class Pgtk::Retry
100
105
  attempt = 0
101
106
  begin
102
107
  @pool.exec(sql, *)
108
+ rescue Pgtk::Pool::Busy => e
109
+ attempt += 1
110
+ raise(Exhausted, "Retry gave up after #{@attempts} attempts: #{e.message}") if attempt >= @attempts
111
+ retry
103
112
  rescue StandardError, Pgtk::Impatient::TooSlow => e
104
113
  raise(e) unless query.strip.upcase.start_with?('SELECT')
105
114
  attempt += 1
data/lib/pgtk/version.rb CHANGED
@@ -10,5 +10,5 @@ require_relative '../pgtk'
10
10
  # Copyright:: Copyright (c) 2019-2026 Yegor Bugayenko
11
11
  # License:: MIT
12
12
  module Pgtk
13
- VERSION = '0.34.0' unless defined?(VERSION)
13
+ VERSION = '0.34.1' unless defined?(VERSION)
14
14
  end
data/resources/pom.xml CHANGED
@@ -11,7 +11,7 @@
11
11
  <packaging>pom</packaging>
12
12
  <properties>
13
13
  <postgresql.version>42.7.13</postgresql.version>
14
- <liquibase.version>5.0.3</liquibase.version>
14
+ <liquibase.version>5.0.4</liquibase.version>
15
15
  </properties>
16
16
  <dependencies>
17
17
  <dependency>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pgtk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.34.0
4
+ version: 0.34.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko