jflow 0.2.5 → 0.2.6

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
  SHA1:
3
- metadata.gz: a39c9fd14f64b6c067143fae05df488e5ebf146e
4
- data.tar.gz: 3b3e9cf16d297f884d84a23e51bc7a50f1b4851a
3
+ metadata.gz: 308f589a87738e9ab38d7a714ade494978ae753e
4
+ data.tar.gz: 7b4769dcd0ffe32e4faa9983f23cb8a0efe693ff
5
5
  SHA512:
6
- metadata.gz: dccbe5e1dfefa8ef5cfd8880675576ebaff524422bd443f78b8381cf1b435c0496fbeea1e44983ed61fa082018a6e204ea82ddb2263f766a5e49a41ba1fc6308
7
- data.tar.gz: 03a10a4ef3012ed02c8e5912e4a7de4c083393319dcd8881989a95ba5b306f72bed98c7523da599cb502319193c179bcc0eb5388c08e1b0c3c5a3ec8dc954292
6
+ metadata.gz: e0223780c90d2a666ab88fa98663ee704031d09ffe8c55e9f1a56206f6763c5d583e984b8d5da1384b7e04fdcef3a37dcaaad823402a928d16aab3889b444392
7
+ data.tar.gz: 83afde68c71aca64663dd9dd5d2e769b50465a44cdd55ea099f3579d705a3959d0ba9b0cdc9a98af653c2c1d117328d55583de0131b92f3f842152d7534740b4
data/bin/jflow_worker CHANGED
@@ -38,6 +38,31 @@ configuration["number_of_workers"].times do |i|
38
38
  end
39
39
  end
40
40
 
41
- threads.each { |thr| thr.join }
41
+ def shutdown(threads)
42
+ JFlow.configuration.logger.info "Sending kill signal to running threads. Please wait for current polling to finish"
43
+ kill_threads = []
44
+ threads.each do |thread|
45
+ thread["do_exit"] = true
46
+ if thread["state"] == :working
47
+ kill_threads << Thread.new do
48
+ sleep 60
49
+ if thread.alive?
50
+ thread.raise("Workers are going down!")
51
+ end
52
+ end
53
+ end
54
+ end
55
+ kill_threads.each { |thr| thr.join }
56
+ end
57
+
58
+ Signal.trap("INT") {
59
+ shutdown(threads)
60
+ }
61
+
62
+ # Trap `Kill `
63
+ Signal.trap("TERM") {
64
+ shutdown(threads)
65
+ }
42
66
 
67
+ threads.each { |thr| thr.join }
43
68
 
@@ -40,6 +40,7 @@ module JFlow
40
40
 
41
41
  def run!
42
42
  log "Started #{klass}##{method} with #{input}"
43
+
43
44
  result = klass.new.send(method, *input) || "done"
44
45
  log "Result is #{result.class} #{result}"
45
46
  completed!(result)
@@ -57,7 +58,7 @@ module JFlow
57
58
  swf_client.respond_activity_task_failed({
58
59
  task_token: token,
59
60
  reason: exception.message,
60
- details: exception.backtrace.join("\n"),
61
+ details: exception.backtrace ? exception.backtrace.join("\n") : "no stacktrace",
61
62
  })
62
63
  end
63
64
 
@@ -10,33 +10,43 @@ module JFlow
10
10
  end
11
11
 
12
12
  def start!
13
- loop do
13
+ while should_be_working?
14
14
  log "Polling for task on #{domain} - #{tasklist}"
15
15
  poll
16
16
  end
17
+ log "Thread is marked as exiting, stopping the poll"
17
18
  end
18
19
 
19
- private
20
20
 
21
21
  def poll
22
+ Thread.current["state"] = :polling
22
23
  response = JFlow.configuration.swf_client.poll_for_activity_task(poll_params)
23
24
  if response.task_token
24
- process_task(response)
25
+ log "Got task #{response.task_token}"
26
+ task = JFlow::Activity::Task.new(response)
27
+ if should_be_working?
28
+ process(task)
29
+ else
30
+ #The worker is shuting down, we don't want to start working on anything
31
+ #so we fail the task and let the decider queue it up for retry later
32
+ task.failed!(Exception.new("Worker is going down!"))
33
+ end
25
34
  else
26
35
  log "Got no task"
27
36
  end
28
37
  end
29
38
 
30
- def process_task(response)
31
- log "Got task #{response.task_token}"
32
- task = JFlow::Activity::Task.new(response)
39
+ def process(task)
33
40
  begin
41
+ Thread.current["state"] = :working
34
42
  task.run!
35
43
  rescue => exception
36
44
  task.failed!(exception)
37
45
  end
38
46
  end
39
47
 
48
+ private
49
+
40
50
  def identity
41
51
  @identity ||= "#{`hostname`.chomp}-#{Thread.current.object_id}"
42
52
  end
@@ -55,6 +65,10 @@ module JFlow
55
65
  }
56
66
  end
57
67
 
68
+ def should_be_working?
69
+ Thread.current["do_exit"] != true
70
+ end
71
+
58
72
  end
59
73
  end
60
74
  end
data/lib/jflow/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module JFlow
2
- VERSION = "0.2.5"
2
+ VERSION = "0.2.6"
3
3
  end
metadata CHANGED
@@ -1,25 +1,25 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jflow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christophe Verbinnen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-11 00:00:00.000000000 Z
11
+ date: 2016-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: slop
15
15
  version_requirements: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '4'
20
20
  requirement: !ruby/object:Gem::Requirement
21
21
  requirements:
22
- - - ~>
22
+ - - "~>"
23
23
  - !ruby/object:Gem::Version
24
24
  version: '4'
25
25
  prerelease: false
@@ -28,12 +28,12 @@ dependencies:
28
28
  name: aws-sdk
29
29
  version_requirements: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '2'
34
34
  requirement: !ruby/object:Gem::Requirement
35
35
  requirements:
36
- - - ~>
36
+ - - "~>"
37
37
  - !ruby/object:Gem::Version
38
38
  version: '2'
39
39
  prerelease: false
@@ -42,12 +42,12 @@ dependencies:
42
42
  name: hash_validator
43
43
  version_requirements: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0.4'
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  requirements:
50
- - - ~>
50
+ - - "~>"
51
51
  - !ruby/object:Gem::Version
52
52
  version: '0.4'
53
53
  prerelease: false
@@ -56,12 +56,12 @@ dependencies:
56
56
  name: bundler
57
57
  version_requirements: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.10'
62
62
  requirement: !ruby/object:Gem::Requirement
63
63
  requirements:
64
- - - ~>
64
+ - - "~>"
65
65
  - !ruby/object:Gem::Version
66
66
  version: '1.10'
67
67
  prerelease: false
@@ -70,12 +70,12 @@ dependencies:
70
70
  name: rake
71
71
  version_requirements: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '10.0'
76
76
  requirement: !ruby/object:Gem::Requirement
77
77
  requirements:
78
- - - ~>
78
+ - - "~>"
79
79
  - !ruby/object:Gem::Version
80
80
  version: '10.0'
81
81
  prerelease: false
@@ -84,12 +84,12 @@ dependencies:
84
84
  name: rspec
85
85
  version_requirements: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  requirement: !ruby/object:Gem::Requirement
91
91
  requirements:
92
- - - '>='
92
+ - - ">="
93
93
  - !ruby/object:Gem::Version
94
94
  version: '0'
95
95
  prerelease: false
@@ -98,12 +98,12 @@ dependencies:
98
98
  name: simplecov
99
99
  version_requirements: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  requirement: !ruby/object:Gem::Requirement
105
105
  requirements:
106
- - - '>='
106
+ - - ">="
107
107
  - !ruby/object:Gem::Version
108
108
  version: '0'
109
109
  prerelease: false
@@ -118,9 +118,9 @@ executables:
118
118
  extensions: []
119
119
  extra_rdoc_files: []
120
120
  files:
121
- - .gitignore
122
- - .rspec
123
- - .travis.yml
121
+ - ".gitignore"
122
+ - ".rspec"
123
+ - ".travis.yml"
124
124
  - Gemfile
125
125
  - README.md
126
126
  - Rakefile
@@ -146,17 +146,17 @@ require_paths:
146
146
  - lib
147
147
  required_ruby_version: !ruby/object:Gem::Requirement
148
148
  requirements:
149
- - - '>='
149
+ - - ">="
150
150
  - !ruby/object:Gem::Version
151
151
  version: '0'
152
152
  required_rubygems_version: !ruby/object:Gem::Requirement
153
153
  requirements:
154
- - - '>='
154
+ - - ">="
155
155
  - !ruby/object:Gem::Version
156
156
  version: '0'
157
157
  requirements: []
158
158
  rubyforge_project:
159
- rubygems_version: 2.4.5
159
+ rubygems_version: 2.4.8
160
160
  signing_key:
161
161
  specification_version: 4
162
162
  summary: SWF Flow framework for jRuby