toiler 0.6.0 → 0.6.1

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: 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: