pgdice 0.4.1 → 0.4.2

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: 9232acb1dfa33aad924a95525d3af64784e8ac525d100e1f90b58708d5d61e7b
4
- data.tar.gz: e5d06ae456620ff0f2c807e274dc33a65ad893087e10b8f3ad6616947f688464
3
+ metadata.gz: 6ae586abaf672ced69ab9bab60300d99827b9b39363077c1ead5376c74823ba3
4
+ data.tar.gz: 5cd703d8edaaf0315e62a761ea1a34d7f8b9e07b7a9e5caa09505d16ce20030e
5
5
  SHA512:
6
- metadata.gz: 4262c4066a0d4eaf1305875b06a90cd71570dd4eb1e0da8dfc934080aa1f04ed47c084548df4cd3c39a55f7c726fba7a15cafd4804ada6228217922fb4e36509
7
- data.tar.gz: 2df09b63917ef19edac7bcc4a5a61724f0bf3221572403e8684bb808908ea749993f8a5d9348a615b2eb2a4c282d2a909a7e0dd600919834b6e0d59bd2b3c0fa
6
+ metadata.gz: 93ebdada6b6e423bb1b0befda9bae91b52d3e19b498c818d38dac31268f77b21462b75b17bfc4c95281915e38c786a8f16cc2297fb97090b1c2756730c4c8706
7
+ data.tar.gz: 8c25ece5a48b2972b0571de6be7a0a6912c193af0ad3193224b1946bf70b04f1771b6d209ccdb7e720aeeb9b53f4ae3ab74542de1bae22d33a17f11dd8e3c00b
data/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@
2
2
  All notable changes to this project will be documented in this file.
3
3
  This project adheres to [Semantic Versioning](http://semver.org/).
4
4
 
5
+ ## [v0.4.2] : 2019-04-22
6
+ ### Changes
7
+ - Fix #19 where PgDice wouldn't recover from a broken PG::Connection
8
+ by adding new retry behavior
9
+
5
10
  ## [v0.4.1] : 2019-03-21
6
11
  ### Changes
7
12
  - Fix bug where partitioning by months would break when the month was < 10
data/lib/pgdice.rb CHANGED
@@ -42,6 +42,8 @@ require 'pgdice/partition_manager_factory'
42
42
  require 'pgdice/partition_dropper'
43
43
  require 'pgdice/partition_dropper_factory'
44
44
 
45
+ require 'pgdice/query_executor'
46
+
45
47
  require 'pgdice/database_connection'
46
48
  require 'pgdice/database_connection_factory'
47
49
 
@@ -10,7 +10,8 @@ module PgDice
10
10
 
11
11
  def initialize(configuration, opts = {})
12
12
  @configuration = configuration
13
- @query_executor = opts[:query_executor] ||= ->(query) { pg_connection.exec(query) }
13
+ @query_executor = opts[:query_executor] ||= PgDice::QueryExecutor.new(logger: logger,
14
+ connection_supplier: -> { pg_connection })
14
15
  end
15
16
 
16
17
  def call
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Entry point for DatabaseConnection
4
+ module PgDice
5
+ # Wrapper class around pg_connection to reset connection on PG errors
6
+ class QueryExecutor
7
+ attr_reader :logger
8
+
9
+ def initialize(logger:, connection_supplier:)
10
+ @logger = logger
11
+ @connection_supplier = connection_supplier
12
+ end
13
+
14
+ def call(query)
15
+ @connection_supplier.call.exec(query)
16
+ rescue PG::Error => error
17
+ logger.error { "Caught error: #{error}. Going to reset connection and try again" }
18
+ @connection_supplier.call.reset
19
+ @connection_supplier.call.exec(query)
20
+ end
21
+ end
22
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PgDice
4
- VERSION = '0.4.1'
4
+ VERSION = '0.4.2'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pgdice
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Newell
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-03-21 00:00:00.000000000 Z
11
+ date: 2019-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg
@@ -325,6 +325,7 @@ files:
325
325
  - lib/pgdice/period_fetcher_factory.rb
326
326
  - lib/pgdice/pg_slice_manager.rb
327
327
  - lib/pgdice/pg_slice_manager_factory.rb
328
+ - lib/pgdice/query_executor.rb
328
329
  - lib/pgdice/table.rb
329
330
  - lib/pgdice/table_finder.rb
330
331
  - lib/pgdice/validation.rb