midget_jobs 0.2.2 → 0.2.8

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: f31ce7256430433d6371404650a9a13eed0e22bcabf74dae66fad28ede2a037c
4
- data.tar.gz: 70dd350c6c5ab4c64048e7dd120f9f7a8ab0e5586808a101df1dd4a04b27a859
3
+ metadata.gz: 726ef4455cc3037f6e74c8f60bbecddcd445aff1b163fd4f7d6e981a5ccb5ba0
4
+ data.tar.gz: 79207fc2169592f3b8f01ba142f9bdadc0fb55905ac4d6d5e2c58909f45aff81
5
5
  SHA512:
6
- metadata.gz: 3eadc0b0adf4aa7eb624e1a0544ce985d1740e912793363b54bced5cc0cab9ba741e4a71bf8b126fccd9999905d94cfb48f49f1299f7c4f19c9fd92698c33309
7
- data.tar.gz: 603cb4139df7662a141acb2fdd1966a2875af20e4ed4bce843b1ed1422731ac10455bee3af9a51775cb2fa5f8847ea2bfb65db5d25890256fc0e66ec81d5c0ee
6
+ metadata.gz: d69e5ed73323e7055fd85ebc9b2ac85977fce3d92a5a29b85a5431a826ff56b7deb48314f16ba8f3647e14ff6127276dcbf1deb7482f849257ee98c3c6f82e39
7
+ data.tar.gz: f5d2f0e5f337df74b56ddee0e768d8cc4b849d93304c65a1da9d6b65a5ca25d2f7cca864469be27d3b2b3bc67ca73f1076c1e6c47198588a8a8b9130da2d2f9d
@@ -1,3 +1,3 @@
1
1
  module MidgetJobs
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.8"
3
3
  end
@@ -1,6 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PostgresNotificationsListener
4
+ TIME_TO_DIE = 3
5
+ EXCEPTION_TIME = 0.333
6
+
4
7
  def listen_notifications
5
8
  Rails.logger.info "#{name} listening_job started"
6
9
  Thread.new do
@@ -13,18 +16,29 @@ module PostgresNotificationsListener
13
16
  Rails.logger.info "postgres #{event.inspect}, pid: #{pid.inspect}, data: #{data.inspect}"
14
17
  process_notification(data)
15
18
  end
16
- rescue ActiveRecord::StatementInvalid => e
17
- Rails.logger.error "Ex #{name} listening_job wait_for_notify #{e}-retrying!"
18
- if e.to_s.include?('PG::ConnectionBad')
19
- Rails.logger.error "Reestablish AR connection..."
20
- ActiveRecord::Base.connection.verify!
21
- end
19
+ rescue PG::ConnectionBad => e
20
+ measure_exception_severity
21
+ Rails.logger.error "#{name} listening_job wait_for_notify lost connection #{e.inspect} retry #{@exception_counter}th time!"
22
+ Rails.logger.error 'Reestablish AR connection...'
23
+ ActiveRecord::Base.connection.verify!
22
24
  sleep 0.1
23
- retry
25
+ @exception_counter.to_i < TIME_TO_DIE ? retry : raise(e)
24
26
  rescue StandardError => e
25
- Rails.logger.error "Ex #{name} listening_job wait_for_notify #{e}-retrying!"
26
- retry
27
+ measure_exception_severity
28
+ Rails.logger.error "#{name} listening_job wait_for_notify exception #{e.inspect} retry #{@exception_counter}th time!"
29
+ sleep 0.1
30
+ @exception_counter.to_i < TIME_TO_DIE ? retry : raise(e)
27
31
  end
28
32
  end.abort_on_exception = true
29
33
  end
34
+
35
+ private
36
+
37
+ def measure_exception_severity
38
+ @exception_counter, @last_exception_time = too_soon? ? [exception_counter.to_i + 1, @last_exception_time] : [0, Time.zone.now]
39
+ end
40
+
41
+ def too_soon?
42
+ (Time.zone.now - @last_exception_time) < EXCEPTION_TIME if @last_exception_time.present?
43
+ end
30
44
  end
@@ -29,6 +29,6 @@ Gem::Specification.new do |spec|
29
29
  spec.require_paths = ["lib"]
30
30
 
31
31
  spec.add_development_dependency "bundler", "~> 2.0"
32
- spec.add_development_dependency "rake", ">= 12.3.3"
32
+ spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.3'
33
33
  spec.add_development_dependency "minitest", "~> 5.0"
34
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: midget_jobs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - josefchmel
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-24 00:00:00.000000000 Z
11
+ date: 2021-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -28,16 +28,22 @@ dependencies:
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '13.0'
31
34
  - - ">="
32
35
  - !ruby/object:Gem::Version
33
- version: 12.3.3
36
+ version: 13.0.3
34
37
  type: :development
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '13.0'
38
44
  - - ">="
39
45
  - !ruby/object:Gem::Version
40
- version: 12.3.3
46
+ version: 13.0.3
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: minitest
43
49
  requirement: !ruby/object:Gem::Requirement
@@ -52,7 +58,7 @@ dependencies:
52
58
  - - "~>"
53
59
  - !ruby/object:Gem::Version
54
60
  version: '5.0'
55
- description:
61
+ description:
56
62
  email:
57
63
  - chmel@jchsoft.cz
58
64
  executables: []
@@ -91,7 +97,7 @@ licenses:
91
97
  metadata:
92
98
  homepage_uri: https://github.com/jchsoft/midget_jobs
93
99
  source_code_uri: https://github.com/jchsoft/midget_jobs
94
- post_install_message:
100
+ post_install_message:
95
101
  rdoc_options: []
96
102
  require_paths:
97
103
  - lib
@@ -107,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
113
  version: '0'
108
114
  requirements: []
109
115
  rubygems_version: 3.0.6
110
- signing_key:
116
+ signing_key:
111
117
  specification_version: 4
112
118
  summary: Small background job scheduler closely related with Rails ActiveJob and PostgreSQL.
113
119
  test_files: []