quebert 1.0.0 → 1.0.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.
@@ -1,3 +1,3 @@
1
1
  module Quebert
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
@@ -10,18 +10,33 @@ module Quebert
10
10
 
11
11
  # Start the worker backend and intercept exceptions if a handler is provided
12
12
  def start
13
- Signal.trap('TERM'){ stop }
14
-
13
+ Signal.trap('TERM') { safe_stop }
14
+ Signal.trap('INT') { safe_stop }
15
+
15
16
  logger.info "Worker started with #{backend.class.name} backend\n"
16
- while controller = backend.reserve do
17
+ while @controller = backend.reserve do
17
18
  begin
18
- controller.perform
19
+ @controller.perform
19
20
  rescue Exception => e
20
21
  exception_handler ? exception_handler.call(e) : raise(e)
21
- end
22
+ end
23
+ @controller = nil
24
+
25
+ stop if @terminate_sent
22
26
  end
23
27
  end
24
28
 
29
+ def safe_stop
30
+ if @terminate_sent
31
+ logger.info "Ok! I get the point. Shutting down immediately."
32
+ stop
33
+ else
34
+ logger.info "Finishing current job then shutting down."
35
+ @terminate_sent = true
36
+ stop unless @controller
37
+ end
38
+ end
39
+
25
40
  def stop
26
41
  logger.info "Worker stopping\n"
27
42
  exit 0
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quebert
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 0
10
- version: 1.0.0
9
+ - 1
10
+ version: 1.0.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Brad Gessler
@@ -17,7 +17,7 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2011-11-29 00:00:00 -08:00
20
+ date: 2012-03-09 00:00:00 -08:00
21
21
  default_executable:
22
22
  dependencies:
23
23
  - !ruby/object:Gem::Dependency