pgtk 0.31.2 → 0.31.4
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 +4 -4
- data/lib/pgtk/pool.rb +22 -4
- data/lib/pgtk/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b3a43722aa806c7c496234f00c186abac8cf07dfeb48e9baa97353fca08a1e0a
|
|
4
|
+
data.tar.gz: 63e903b575092c0bb62bf25b5aa96004723f4c4312bf3e16c4b5fc2af0b2b0c7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d03c3c8458643fc95801a51b6d2fd4a61808ff934f2ac4341ea02b779d8ef688f44283f079b69a8d8bd02dc1d2733c07af4549dfcf8b41e3acceb5402083223e
|
|
7
|
+
data.tar.gz: 842c436ab8180751b612b55a5a0f113b3db10a101c1db9dd3adf1150ac2b5961c3baa5654a7d8c4cc44ccb788c77e495c0523a235ef0e2275f6c4b12729a8fa6
|
data/lib/pgtk/pool.rb
CHANGED
|
@@ -219,9 +219,14 @@ class Pgtk::Pool
|
|
|
219
219
|
r = yield(t)
|
|
220
220
|
t.exec('COMMIT')
|
|
221
221
|
r
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
222
|
+
ensure
|
|
223
|
+
if c.transaction_status != PG::Constants::PQTRANS_IDLE
|
|
224
|
+
begin
|
|
225
|
+
t.exec('ROLLBACK')
|
|
226
|
+
rescue StandardError => e
|
|
227
|
+
@log.warn("Failed to rollback transaction: #{e.message}")
|
|
228
|
+
end
|
|
229
|
+
end
|
|
225
230
|
end
|
|
226
231
|
end
|
|
227
232
|
end
|
|
@@ -343,16 +348,29 @@ class Pgtk::Pool
|
|
|
343
348
|
|
|
344
349
|
def connect
|
|
345
350
|
conn = @pool.pop
|
|
351
|
+
conn = renew(conn) if dead?(conn)
|
|
346
352
|
begin
|
|
347
353
|
yield(conn)
|
|
348
354
|
rescue StandardError => e
|
|
349
|
-
|
|
355
|
+
begin
|
|
356
|
+
conn = renew(conn)
|
|
357
|
+
rescue StandardError => re
|
|
358
|
+
@log.warn("Failed to renew connection after #{e.message}: #{re.message}")
|
|
359
|
+
end
|
|
350
360
|
raise(e)
|
|
351
361
|
ensure
|
|
352
362
|
@pool.push(conn)
|
|
353
363
|
end
|
|
354
364
|
end
|
|
355
365
|
|
|
366
|
+
def dead?(conn)
|
|
367
|
+
conn.finished? ||
|
|
368
|
+
conn.status == PG::Constants::CONNECTION_BAD ||
|
|
369
|
+
conn.transaction_status != PG::Constants::PQTRANS_IDLE
|
|
370
|
+
rescue StandardError
|
|
371
|
+
true
|
|
372
|
+
end
|
|
373
|
+
|
|
356
374
|
def renew(conn)
|
|
357
375
|
begin
|
|
358
376
|
conn.close unless conn.finished?
|
data/lib/pgtk/version.rb
CHANGED