jflow 0.3.6 → 0.4.0
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 +4 -4
- data/README.md +2 -1
- data/jflow.gemspec +3 -2
- data/lib/jflow/activity/definition.rb +15 -4
- data/lib/jflow/activity/map.rb +6 -1
- data/lib/jflow/activity/task.rb +17 -7
- data/lib/jflow/version.rb +1 -1
- data/lib/jflow.rb +1 -0
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e2276ad3d9c8655f255cfa1e30aefbc9fa7c600a
|
4
|
+
data.tar.gz: 1cd72da5e78de2baaa6b59d7f94e769210218956
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 07c8bb0d5c19255d9ffefe88408437f4c3d6ed5eef9d8071d3f637caf12f0eb72a6432a9d37d53600b4aaff6fdd4d6b0296ee30a9cced1cd71e8be9f9a6ca47f
|
7
|
+
data.tar.gz: 0af8e2edad69d05aec7772a9d52bdd6f294ea2731976d5e9c0ce02abfc778d1bc838f75f5d52653666f5c1d736249aa40d838b7c335f73ea888f82ac28f0ee18
|
data/README.md
CHANGED
@@ -42,7 +42,8 @@ Class FooActivity
|
|
42
42
|
default_task_schedule_to_start_timeout: "600",
|
43
43
|
default_task_schedule_to_close_timeout: "600",
|
44
44
|
default_task_start_to_close_timeout: "600",
|
45
|
-
default_task_heartbeat_timeout: "600"
|
45
|
+
default_task_heartbeat_timeout: "600",
|
46
|
+
exceptions_to_exclude: [PermanentError]
|
46
47
|
}
|
47
48
|
end
|
48
49
|
|
data/jflow.gemspec
CHANGED
@@ -6,8 +6,8 @@ require 'jflow/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "jflow"
|
8
8
|
spec.version = JFlow::VERSION
|
9
|
-
spec.authors = ["Christophe Verbinnen"]
|
10
|
-
spec.email = ["christophe.verbinnen@lookout.com"]
|
9
|
+
spec.authors = ["Christophe Verbinnen","Richard Vorp"]
|
10
|
+
spec.email = ["christophe.verbinnen@lookout.com","richard.vorp@lookout.com"]
|
11
11
|
|
12
12
|
spec.summary = %q{SWF Flow framework for jRuby}
|
13
13
|
spec.description = %q{you know, for flow}
|
@@ -28,6 +28,7 @@ Gem::Specification.new do |spec|
|
|
28
28
|
|
29
29
|
spec.add_runtime_dependency "aws-sdk", "~> 2"
|
30
30
|
spec.add_runtime_dependency "hash_validator", "~> 0.4"
|
31
|
+
spec.add_runtime_dependency "jflow_exceptions", "~> 0.1.1"
|
31
32
|
|
32
33
|
spec.add_development_dependency "bundler", "~> 1.10"
|
33
34
|
spec.add_development_dependency "rake", "~> 10.0"
|
@@ -2,7 +2,11 @@ module JFlow
|
|
2
2
|
module Activity
|
3
3
|
class Definition
|
4
4
|
|
5
|
-
DEFAULT_OPTIONS = {
|
5
|
+
DEFAULT_OPTIONS = {
|
6
|
+
:exceptions_to_exclude => []
|
7
|
+
}
|
8
|
+
|
9
|
+
REGISTRATION_OPTIONS = [:version, :domain, :name, :default_task_list]
|
6
10
|
|
7
11
|
OPTIONS_VALIDATOR = {
|
8
12
|
:version => "string",
|
@@ -10,7 +14,8 @@ module JFlow
|
|
10
14
|
:name => "string",
|
11
15
|
:default_task_list => {
|
12
16
|
:name => "string"
|
13
|
-
}
|
17
|
+
},
|
18
|
+
:exceptions_to_exclude => 'array'
|
14
19
|
}
|
15
20
|
|
16
21
|
attr_reader :options, :klass
|
@@ -38,7 +43,7 @@ module JFlow
|
|
38
43
|
end
|
39
44
|
|
40
45
|
def register_activity
|
41
|
-
JFlow.configuration.swf_client.register_activity_type(
|
46
|
+
JFlow.configuration.swf_client.register_activity_type(registration_options)
|
42
47
|
JFlow.configuration.logger.info "Activity #{name} was registered successfuly"
|
43
48
|
end
|
44
49
|
|
@@ -77,6 +82,12 @@ module JFlow
|
|
77
82
|
|
78
83
|
private
|
79
84
|
|
85
|
+
def registration_options
|
86
|
+
REGISTRATION_OPTIONS.each_with_object({}) do |key, hash|
|
87
|
+
hash[key] = @options[key]
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
80
91
|
def validate_activity!
|
81
92
|
validator = HashValidator.validate(@options, OPTIONS_VALIDATOR)
|
82
93
|
raise "Activity #{options[:name]}definition is invalid! #{validator.errors}" unless validator.valid?
|
@@ -84,4 +95,4 @@ module JFlow
|
|
84
95
|
|
85
96
|
end
|
86
97
|
end
|
87
|
-
end
|
98
|
+
end
|
data/lib/jflow/activity/map.rb
CHANGED
data/lib/jflow/activity/task.rb
CHANGED
@@ -43,6 +43,12 @@ module JFlow
|
|
43
43
|
@klass_value
|
44
44
|
end
|
45
45
|
|
46
|
+
def definition_options
|
47
|
+
@definition_options ||= JFlow.configuration.activity_map.options_for(name,version)
|
48
|
+
raise "Could not find activity definition for #{name}, #{version}" unless @definition_options
|
49
|
+
@definition_options
|
50
|
+
end
|
51
|
+
|
46
52
|
def method
|
47
53
|
if name.split('.').size > 1
|
48
54
|
method = name.split('.').last
|
@@ -67,26 +73,30 @@ module JFlow
|
|
67
73
|
})
|
68
74
|
end
|
69
75
|
|
70
|
-
|
71
76
|
def failed!(exception)
|
72
77
|
log "Task Failed #{exception.message}"
|
73
78
|
|
74
79
|
reason = truncate(exception.message, MAX_REASON_SIZE)
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
+
|
81
|
+
if retryable?(exception)
|
82
|
+
converted_exception = JFlow::Exceptions::Common.new(exception)
|
83
|
+
else
|
84
|
+
converted_exception = JFlow::Exceptions::Fatal.new(exception)
|
85
|
+
end
|
80
86
|
|
81
87
|
swf_client.respond_activity_task_failed(
|
82
88
|
task_token: token,
|
83
89
|
reason: reason,
|
84
|
-
details:
|
90
|
+
details: truncate(YAML.dump_stream(converted_exception, exception.backtrace), MAX_DETAILS_SIZE)
|
85
91
|
)
|
86
92
|
end
|
87
93
|
|
88
94
|
private
|
89
95
|
|
96
|
+
def retryable?(exception)
|
97
|
+
!definition_options[:exceptions_to_exclude].include?(exception.class)
|
98
|
+
end
|
99
|
+
|
90
100
|
def truncate(message, max_length)
|
91
101
|
return message unless message.length > max_length
|
92
102
|
|
data/lib/jflow/version.rb
CHANGED
data/lib/jflow.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jflow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christophe Verbinnen
|
8
|
+
- Richard Vorp
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
12
|
+
date: 2016-04-29 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: aws-sdk
|
@@ -38,6 +39,20 @@ dependencies:
|
|
38
39
|
version: '0.4'
|
39
40
|
prerelease: false
|
40
41
|
type: :runtime
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: jflow_exceptions
|
44
|
+
version_requirements: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 0.1.1
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 0.1.1
|
54
|
+
prerelease: false
|
55
|
+
type: :runtime
|
41
56
|
- !ruby/object:Gem::Dependency
|
42
57
|
name: bundler
|
43
58
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -97,6 +112,7 @@ dependencies:
|
|
97
112
|
description: you know, for flow
|
98
113
|
email:
|
99
114
|
- christophe.verbinnen@lookout.com
|
115
|
+
- richard.vorp@lookout.com
|
100
116
|
executables:
|
101
117
|
- console
|
102
118
|
- jflow_worker
|