ntswf 2.0.3 → 2.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/ntswf/activity_worker.rb +18 -11
- data/lib/ntswf/base.rb +26 -0
- metadata +2 -2
@@ -39,22 +39,29 @@ module Ntswf
|
|
39
39
|
announce("polling for activity task #{activity_task_list}")
|
40
40
|
domain.activity_tasks.poll_for_single_task(activity_task_list) do |activity_task|
|
41
41
|
announce("got activity task #{activity_task.activity_type.inspect} #{activity_task.input}")
|
42
|
-
|
43
|
-
returned_hash = @task_callback.call(describe(activity_task)) if @task_callback
|
44
|
-
process_returned_hash(activity_task, returned_hash)
|
45
|
-
rescue => e
|
46
|
-
notify(e, activity_type: activity_task.activity_type.inspect, input: activity_task.input)
|
47
|
-
details = {
|
48
|
-
error: e.message[0, 1000],
|
49
|
-
exception: e.class.to_s[0, 1000],
|
50
|
-
}
|
51
|
-
activity_task.fail!(details: details.to_json, reason: 'Exception')
|
52
|
-
end
|
42
|
+
process_single_task activity_task
|
53
43
|
end
|
54
44
|
end
|
55
45
|
|
56
46
|
protected
|
57
47
|
|
48
|
+
def process_single_task(activity_task)
|
49
|
+
returned_hash = @task_callback.call(describe(activity_task)) if @task_callback
|
50
|
+
process_returned_hash(activity_task, returned_hash)
|
51
|
+
rescue => exception
|
52
|
+
fail_with_exception(activity_task, exception)
|
53
|
+
end
|
54
|
+
|
55
|
+
def fail_with_exception(activity_task, exception)
|
56
|
+
notify(exception, activity_type: activity_task.activity_type.inspect,
|
57
|
+
input: activity_task.input)
|
58
|
+
details = {
|
59
|
+
error: exception.message[0, 1000],
|
60
|
+
exception: exception.class.to_s[0, 1000],
|
61
|
+
}
|
62
|
+
activity_task.fail!(details: details.to_json, reason: 'Exception')
|
63
|
+
end
|
64
|
+
|
58
65
|
def describe(activity_task)
|
59
66
|
options = parse_input(activity_task.input)
|
60
67
|
options.merge!(
|
data/lib/ntswf/base.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'aws'
|
2
2
|
require 'ostruct'
|
3
|
+
require 'securerandom'
|
3
4
|
|
4
5
|
module Ntswf
|
5
6
|
module Base
|
@@ -16,10 +17,14 @@ module Ntswf
|
|
16
17
|
# overwritten by another process. See {Worker#in_subprocess}
|
17
18
|
# @option config [Numeric] :subprocess_retries (0) see {Worker#in_subprocess}
|
18
19
|
# @option config [String] :secret_access_key AWS credential
|
20
|
+
# @option config [String] :task_list_suffix_file
|
21
|
+
# Development option.
|
22
|
+
# A random ID is stored at the given path, and appended to all task list names.
|
19
23
|
# @option config [String] :unit This worker/client's activity task list key
|
20
24
|
# @raise If a task list name is invalid
|
21
25
|
def configure(config)
|
22
26
|
@config = OpenStruct.new(config)
|
27
|
+
autocomplete_task_list_names!
|
23
28
|
raise_if_invalid_task_list
|
24
29
|
end
|
25
30
|
|
@@ -122,5 +127,26 @@ module Ntswf
|
|
122
127
|
end
|
123
128
|
end
|
124
129
|
end
|
130
|
+
|
131
|
+
def autocomplete_task_list_names!
|
132
|
+
@config.decision_task_list = autocomplete(@config.decision_task_list, "master-dtl")
|
133
|
+
if @config.activity_task_lists
|
134
|
+
@config.activity_task_lists.each do |key, value|
|
135
|
+
@config.activity_task_lists[key] = autocomplete(value, "#{key}-atl")
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def autocomplete(value, fallback)
|
141
|
+
value = fallback unless value.kind_of? String
|
142
|
+
"#{value}#{task_list_suffix}"
|
143
|
+
end
|
144
|
+
|
145
|
+
def task_list_suffix
|
146
|
+
file = @config.task_list_suffix_file
|
147
|
+
return "" unless file
|
148
|
+
File.write(file, SecureRandom.hex(9)) unless File.exist?(file)
|
149
|
+
@suffix ||= File.read(file)
|
150
|
+
end
|
125
151
|
end
|
126
152
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ntswf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-02-
|
12
|
+
date: 2014-02-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: aws-sdk
|