toiler 0.6.0 → 0.6.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: c5f0706a7d25d8bce91d1bb08d5ae3a640c06dbf6e874f5176e8c83b266eea9b
4
- data.tar.gz: d738548ee19af151a2f5aecf925c3205175f729622e34a39374e75b1e68e8395
3
+ metadata.gz: 0be5aeacdc4416fc5d665387f5e5e8858c81b99f00cf63e58c71753f706f1d5d
4
+ data.tar.gz: 4a2d016c5b7a44cecce56076c02e058cb37952620be0d5a55b59fba8291f2316
5
5
  SHA512:
6
- metadata.gz: 2682ecec945d595c2497fa77a2d4cbb1a602575ab79f19afe094c747ff4d027ca58964dce1b85b70077b873c9e82904fe082cfdb03aacaec420e6a40e739a3ec
7
- data.tar.gz: e11c323b0570c1ed307752e62771fe41ff1c0e166691c6673b8fa4dabb1b3b5cd7715ae91a5c76f681c1e6c0c0cb0f4f13042bcc4017d0f76bc01023b06488d6
6
+ metadata.gz: 52222e17b30a37eb7a136a9114d44b263be27a16e085cbd35f0cff7a56618e206fc92da937fa20dce37cd23e5447f7c3a2b997197ce5b9c64acc4a4baecf48c0
7
+ data.tar.gz: 30d5b088632efa45bb91f4c885efdbe71a3f828b21230fa0cce03e29295fd0941569f9ec54f5af37ffeb2eebaae08a42b7d5a10e797e86b8129ec920c74cc4e7
@@ -34,7 +34,8 @@ module Toiler
34
34
  @executing = true
35
35
  method, *args = msg
36
36
  send(method, *args)
37
- rescue StandardError => e
37
+ rescue StandardError, SystemStackError => e
38
+ # rescue SystemStackError, if we misbehave and cause a stack level too deep exception, we should be able to recover
38
39
  error "Fetcher #{queue.name} raised exception #{e.class}: #{e.message}\n#{e.backtrace.join("\n")}"
39
40
  ensure
40
41
  @executing = false
@@ -93,7 +94,8 @@ module Toiler
93
94
  tell :poll_messages
94
95
  end
95
96
 
96
- poll_messages if should_poll?
97
+ # defer method execution to avoid recursion
98
+ tell :poll_messages if should_poll?
97
99
  end
98
100
 
99
101
  def should_poll?
@@ -13,7 +13,7 @@ module Toiler
13
13
  def initialize(queue)
14
14
  @queue = queue
15
15
  @worker_class = Toiler.worker_class_registry[queue]
16
- @executing = Concurrent::AtomicBoolean.new
16
+ @executing = false
17
17
  @thread = nil
18
18
  init_options
19
19
  end
@@ -29,12 +29,13 @@ module Toiler
29
29
  def on_message(msg)
30
30
  method, *args = msg
31
31
  send(method, *args)
32
- rescue StandardError => e
32
+ rescue StandardError, SystemStackError => e
33
+ # rescue SystemStackError, if clients misbehave and cause a stack level too deep exception, we should be able to recover
33
34
  error "Processor #{queue} failed processing, reason: #{e.class}: #{e.message}\n#{e.backtrace.join("\n")}"
34
35
  end
35
36
 
36
37
  def executing?
37
- executing.value
38
+ @executing
38
39
  end
39
40
 
40
41
  private
@@ -70,7 +71,7 @@ module Toiler
70
71
  end
71
72
 
72
73
  def process_init
73
- @executing.make_true
74
+ @executing = true
74
75
  @thread = Thread.current
75
76
  debug "Processor #{queue} begins processing..."
76
77
  end
@@ -80,7 +81,7 @@ module Toiler
80
81
  timer.shutdown if timer
81
82
  ::ActiveRecord::Base.clear_active_connections! if defined? ActiveRecord
82
83
  processor_finished
83
- @executing.make_false
84
+ @executing = false
84
85
  @thread = nil
85
86
  debug "Processor #{queue} finished cleanup after perform..."
86
87
  end
@@ -1,4 +1,4 @@
1
1
  # Toiler Version
2
2
  module Toiler
3
- VERSION = '0.6.0'.freeze
3
+ VERSION = '0.6.1'.freeze
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: toiler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastian Schepens
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-24 00:00:00.000000000 Z
11
+ date: 2021-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -125,7 +125,7 @@ homepage: https://github.com/sschepens/toiler
125
125
  licenses:
126
126
  - LGPLv3
127
127
  metadata: {}
128
- post_install_message:
128
+ post_install_message:
129
129
  rdoc_options: []
130
130
  require_paths:
131
131
  - lib
@@ -140,8 +140,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
140
  - !ruby/object:Gem::Version
141
141
  version: '0'
142
142
  requirements: []
143
- rubygems_version: 3.0.3
144
- signing_key:
143
+ rubygems_version: 3.0.9
144
+ signing_key:
145
145
  specification_version: 4
146
146
  summary: Toiler is a super efficient AWS SQS thread based message processor
147
147
  test_files: