aws-flow 1.0.8 → 1.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +1 -1
  3. data/Rakefile +18 -31
  4. data/aws-flow.gemspec +1 -1
  5. data/lib/aws/decider.rb +1 -2
  6. data/lib/aws/decider/activity.rb +99 -53
  7. data/lib/aws/decider/activity_definition.rb +43 -7
  8. data/lib/aws/decider/async_decider.rb +56 -57
  9. data/lib/aws/decider/async_retrying_executor.rb +4 -5
  10. data/lib/aws/decider/data_converter.rb +2 -2
  11. data/lib/aws/decider/decider.rb +46 -41
  12. data/lib/aws/decider/decision_context.rb +2 -2
  13. data/lib/aws/decider/exceptions.rb +6 -6
  14. data/lib/aws/decider/executor.rb +15 -11
  15. data/lib/aws/decider/flow_defaults.rb +54 -22
  16. data/lib/aws/decider/generic_client.rb +7 -7
  17. data/lib/aws/decider/history_helper.rb +0 -0
  18. data/lib/aws/decider/implementation.rb +5 -5
  19. data/lib/aws/decider/options.rb +285 -155
  20. data/lib/aws/decider/state_machines.rb +10 -10
  21. data/lib/aws/decider/task_handler.rb +5 -5
  22. data/lib/aws/decider/task_poller.rb +152 -15
  23. data/lib/aws/decider/utilities.rb +14 -14
  24. data/lib/aws/decider/version.rb +1 -1
  25. data/lib/aws/decider/worker.rb +21 -20
  26. data/lib/aws/decider/workflow_client.rb +78 -31
  27. data/lib/aws/decider/workflow_clock.rb +1 -1
  28. data/lib/aws/decider/workflow_definition.rb +5 -5
  29. data/lib/aws/decider/workflow_definition_factory.rb +1 -1
  30. data/lib/aws/decider/workflow_enabled.rb +1 -1
  31. data/lib/aws/flow/async_backtrace.rb +19 -18
  32. data/lib/aws/flow/async_scope.rb +32 -16
  33. data/lib/aws/flow/begin_rescue_ensure.rb +61 -56
  34. data/lib/aws/flow/fiber.rb +14 -6
  35. data/lib/aws/flow/flow_utils.rb +9 -6
  36. data/lib/aws/flow/future.rb +43 -18
  37. data/lib/aws/flow/implementation.rb +34 -18
  38. data/lib/aws/flow/simple_dfa.rb +12 -4
  39. data/lib/aws/flow/tasks.rb +120 -86
  40. data/{test/aws → spec/aws/integration}/integration_spec.rb +0 -0
  41. data/{test/aws → spec/aws/unit}/async_backtrace_spec.rb +1 -0
  42. data/{test/aws → spec/aws/unit}/async_scope_spec.rb +0 -0
  43. data/{test/aws → spec/aws/unit}/begin_rescue_ensure_spec.rb +90 -2
  44. data/{test/aws → spec/aws/unit}/decider_spec.rb +41 -53
  45. data/{test/aws → spec/aws/unit}/external_task_spec.rb +0 -0
  46. data/{test/aws → spec/aws/unit}/factories.rb +0 -0
  47. data/{test/aws → spec/aws/unit}/fiber_condition_variable_spec.rb +0 -0
  48. data/{test/aws → spec/aws/unit}/fiber_spec.rb +0 -0
  49. data/{test/aws → spec/aws/unit}/flow_spec.rb +0 -0
  50. data/{test/aws → spec/aws/unit}/future_spec.rb +0 -0
  51. data/{test/aws → spec/aws/unit}/preinclude_tests.rb +0 -0
  52. data/{test/aws → spec/aws/unit}/rubyflow.rb +0 -0
  53. data/{test/aws → spec/aws/unit}/simple_dfa_spec.rb +0 -0
  54. data/{test/aws → spec}/spec_helper.rb +0 -0
  55. metadata +30 -30
@@ -16,7 +16,7 @@
16
16
  module AWS
17
17
  module Flow
18
18
  def self.version
19
- "1.0.8"
19
+ "1.0.9"
20
20
  end
21
21
  end
22
22
  end
@@ -20,12 +20,12 @@ module AWS
20
20
 
21
21
  # A generic Activity/Workflow worker class.
22
22
  class GenericWorker
23
- # Creates a new GenericWorker
23
+ # Creates a new `GenericWorker`.
24
24
  # @param service
25
25
  # The AWS service class to use.
26
26
  #
27
27
  # @param domain
28
- # The SWF domain to use.
28
+ # The Amazon SWF domain to use.
29
29
  #
30
30
  # @param task_list_to_poll
31
31
  # The list of tasks to poll for this worker.
@@ -56,7 +56,7 @@ module AWS
56
56
  end
57
57
  end
58
58
 
59
- # @!visibility private
59
+ # @api private
60
60
  def camel_case_to_snake_case(camel_case)
61
61
  camel_case.
62
62
  gsub(/(.)([A-Z])/,'\1_\2').
@@ -113,7 +113,7 @@ module AWS
113
113
  # The service used with this workflow worker.
114
114
  #
115
115
  # @param [String] domain
116
- # The SWF domain to operate on.
116
+ # The Amazon SWF domain to operate on.
117
117
  #
118
118
  # @param [Array] task_list
119
119
  # The default task list to put all of the decision requests.
@@ -137,8 +137,8 @@ module AWS
137
137
  add_workflow_implementation(workflow_class)
138
138
  end
139
139
 
140
- # Called by {#add_implementation}
141
- # @!visibility private
140
+ # Called by {#add_implementation}.
141
+ # @api private
142
142
  def add_workflow_implementation(workflow_class)
143
143
  workflow_class.workflows.delete_if do |workflow_type|
144
144
  workflow_type.version.nil? || workflow_type.name.nil?
@@ -183,7 +183,7 @@ module AWS
183
183
  # Starts the workflow with a {WorkflowTaskPoller}.
184
184
  #
185
185
  # @param [true,false] should_register
186
- # Indicates whether or not the workflow needs to be registered with SWF first. If {#register} was already called
186
+ # Indicates whether the workflow needs to be registered with Amazon SWF first. If {#register} was already called
187
187
  # for this workflow worker, specify `false`.
188
188
  #
189
189
  def start(should_register = true)
@@ -216,24 +216,24 @@ module AWS
216
216
  end
217
217
 
218
218
 
219
- # For implementing activity workers, you can use the ActivityWorker class to conveniently poll a task list for
219
+ # Used to implement an activity worker. You can use the `ActivityWorker` class to conveniently poll a task list for
220
220
  # activity tasks.
221
221
  #
222
222
  # You configure the activity worker with activity implementation objects. This worker class then polls for activity
223
223
  # tasks in the specified task list. When an activity task is received, it looks up the appropriate implementation
224
224
  # that you provided, and calls the activity method to process the task. Unlike the {WorkflowWorker}, which creates a
225
- # new instance for every decision task, the ActivityWorker simply uses the object you provided.
225
+ # new instance for every decision task, the `ActivityWorker` simply uses the object you provided.
226
226
  #
227
227
  class ActivityWorker < GenericWorker
228
228
 
229
- # Creates a new ActivityWorker instance.
229
+ # Creates a new `ActivityWorker` instance.
230
230
  #
231
231
  # @param service
232
- # The SWF [Client](http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/Client.html) used to register
232
+ # The Amazon SWF [Client](http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/Client.html) used to register
233
233
  # this activity worker.
234
234
  #
235
235
  # @param [String] domain
236
- # The SWF [Domain](http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/Domain.html) to operate on.
236
+ # The Amazon SWF [Domain](http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/Domain.html) to operate on.
237
237
  #
238
238
  # @param [Array] task_list
239
239
  # The default task list to put all of the activity requests.
@@ -257,7 +257,7 @@ module AWS
257
257
  super(service, domain, task_list, *args)
258
258
  end
259
259
 
260
- # Adds an Activity implementation to this ActivityWorker.
260
+ # Adds an activity implementation to this `ActivityWorker`.
261
261
  #
262
262
  # @param [Activity] class_or_instance
263
263
  # The {Activity} class or instance to add.
@@ -267,7 +267,7 @@ module AWS
267
267
  end
268
268
 
269
269
 
270
- # Registers the activity type
270
+ # Registers the activity type.
271
271
  def register
272
272
  @activity_type_options.each do |activity_type_options|
273
273
  begin
@@ -289,7 +289,7 @@ module AWS
289
289
  end
290
290
  end
291
291
 
292
- # Adds an Activity implementation to this ActivityWorker.
292
+ # Adds an activity implementation to this `ActivityWorker`.
293
293
  #
294
294
  # @param [Activity] class_or_instance
295
295
  # The {Activity} class or instance to add.
@@ -314,10 +314,10 @@ module AWS
314
314
  end
315
315
 
316
316
 
317
- # Starts the Activity that was added to the ActivityWorker
317
+ # Starts the activity that was added to the `ActivityWorker`.
318
318
  #
319
319
  # @param [true, false] should_register
320
- # Set to false if the Activity should not register itself (it is already registered).
320
+ # Set to `false` if the activity should not register itself (it is already registered).
321
321
  #
322
322
  def start(should_register = true)
323
323
  register if should_register
@@ -327,17 +327,18 @@ module AWS
327
327
  end
328
328
  end
329
329
 
330
- # Starts the Activity that was added to the ActivityWorker and, optionally, sets the ActivityTaskPoller.
330
+ # Starts the activity that was added to the `ActivityWorker` and, optionally, sets the {ActivityTaskPoller}.
331
331
  #
332
332
  # @param [true, false] should_register
333
- # Set to `false` if the Activity should not register itself (it is already registered).
333
+ # Set to `false` if the activity should not register itself (it is already registered).
334
334
  #
335
335
  # @param [ActivityTaskPoller] poller
336
- # The {ActivityTaskPoller} to use. If this is not set, a default ActivityTaskPoller will be created.
336
+ # The {ActivityTaskPoller} to use. If this is not set, a default {ActivityTaskPoller} will be created.
337
337
  #
338
338
  def run_once(should_register = true, poller = nil)
339
339
  register if should_register
340
340
  poller = ActivityTaskPoller.new(@service, @domain, @task_list, @activity_definition_map, @executor, @options) if poller.nil?
341
+ Kernel.exit if @shutting_down
341
342
  poller.poll_and_process_single_task(@options.use_forking)
342
343
  end
343
344
  end
@@ -16,13 +16,54 @@
16
16
  module AWS
17
17
  module Flow
18
18
 
19
+ # Contains data about an Amazon SWF domain.
20
+ #
21
+ # @!attribute name
22
+ # The domain name.
23
+ #
19
24
  class MinimalDomain
20
25
  attr_accessor :name
26
+
27
+ # Creates a new `MinimalDomain` instance.
28
+ #
29
+ # @param domain
30
+ # The [AWS::SimpleWorkflow::Domain](http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/Domain.html)
31
+ # that this instance will refer to.
32
+ #
21
33
  def initialize(domain); @domain = domain; end
22
34
  end
23
35
 
36
+ # Contains data about a workflow execution. This class represents a minimal set of data needed by the AWS Flow
37
+ # Framework for Ruby, based on the
38
+ # [AWS::SimpleWorkflow::WorkflowExecution](http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/WorkflowExecution.html)
39
+ # class.
40
+ #
41
+ # @!attribute domain
42
+ # The domain that the workflow is running in. See {MinimalWorkflowExecution#initialize} for details.
43
+ #
44
+ # @!attribute run_id
45
+ # The unique run indentifier for this workflow. See {MinimalWorkflowExecution#initialize} for details.
46
+ #
47
+ # @!attribute workflow_id
48
+ # The unique identifier for this workflow. See {MinimalWorkflowExecution#initialize} for details.
49
+ #
24
50
  class MinimalWorkflowExecution
25
51
  attr_accessor :workflow_id, :run_id, :domain
52
+
53
+ # Creates a new `MinimalWorkflowExecution` instance
54
+ #
55
+ # @param (Domain) domain
56
+ # The Amazon SWF domain that the workflow is running in; an instance of
57
+ # [AWS::SimpleWorkflow::Domain](http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/Domain.html).
58
+ #
59
+ # @param (String) workflow_id
60
+ # The unique workflow indentifier for this workflow; From
61
+ # [AWS::SimpleWorkflow::WorkflowExecution#workflow_id](http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/WorkflowExecution.html#workflow_id-instance_method).
62
+ #
63
+ # @param (String) run_id
64
+ # The unique run indentifier for this workflow. From
65
+ # [AWS::SimpleWorkflow::WorkflowExecution#run_id](http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/WorkflowExecution.html#run_id-instance_method).
66
+ #
26
67
  def initialize(domain, workflow_id, run_id)
27
68
  @domain = domain
28
69
  @workflow_id = workflow_id
@@ -30,11 +71,11 @@ module AWS
30
71
  end
31
72
  end
32
73
 
33
- # A future provided by a [WorkflowExecution](http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/WorkflowExecution.html).
74
+ # A future provided by a
75
+ # [AWS::SimpleWorkflow::WorkflowExecution](http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/WorkflowExecution.html).
34
76
  #
35
77
  # @!attribute _workflow_execution
36
- # A MinimalWorkflowExecution
37
- # instance that this future belongs to.
78
+ # A {MinimalWorkflowExecution} instance that this future belongs to.
38
79
  #
39
80
  # @!attribute return_value
40
81
  # The return value of the future.
@@ -43,28 +84,34 @@ module AWS
43
84
  attr_accessor :_workflow_execution, :return_value
44
85
 
45
86
 
46
- # Creates a new workflow future
87
+ # Creates a new workflow future.
47
88
  #
48
89
  # @param workflow_execution
90
+ # The {MinimalWorkflowExecution} to assign to this future.
49
91
  #
50
92
  def initialize(workflow_execution)
51
93
  @_workflow_execution = workflow_execution.dup
52
94
  @return_value = Future.new
53
95
  end
54
96
 
55
- # determines whether the object is a flow future. The contract is that
56
- # flow futures must have a #get method.
97
+ # Determines whether the object is a flow future. The contract is that flow futures must have a `get` method.
98
+ #
99
+ # @return
100
+ # Always returns `true` for a {WorkflowFuture} object.
57
101
  def is_flow_future?
58
102
  true
59
103
  end
60
104
 
105
+ # @api private
61
106
  def method_missing(method_name, *args, &block)
62
107
  @return_value.send(method_name, *args, &block)
63
108
  end
64
109
 
65
-
66
- # Gets the current value of the workflow execution
67
- # @return
110
+ # Gets the current value of the workflow execution.
111
+ #
112
+ # @return {MinimalWorkflowExecution}
113
+ # The workflow execution that this future belongs to.
114
+ #
68
115
  def workflow_execution
69
116
  @_workflow_execution
70
117
  end
@@ -73,16 +120,16 @@ module AWS
73
120
 
74
121
 
75
122
 
76
- # @!visibility private
123
+ # @api private
77
124
  class NoInput
78
125
  def empty?; return true; end
79
126
  end
80
127
 
81
128
 
82
- # A client for a workflow execution.
129
+ # Represents a client for a workflow execution.
83
130
  #
84
131
  # @!attribute domain
85
- # The SWF domain used for this workflow.
132
+ # The Amazon SWF domain used for this workflow.
86
133
  #
87
134
  # @!attribute [Hash, WorkflowOptions] options
88
135
  # Workflow options for this client.
@@ -90,14 +137,14 @@ module AWS
90
137
  class WorkflowClient < GenericClient
91
138
  attr_accessor :domain, :options
92
139
 
93
- # Creates a new {WorkflowClient}
140
+ # Creates a new {WorkflowClient}.
94
141
  #
95
142
  # @param service
96
- # The SWF [Client](http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/Client.html) to use for
143
+ # The Amazon SWF [Client](http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/Client.html) to use for
97
144
  # creating this {WorkflowClient}.
98
145
  #
99
146
  # @param domain
100
- # The SWF [Domain](http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/Domain.html) in which to
147
+ # The Amazon SWF [Domain](http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/Domain.html) in which to
101
148
  # start the workflow execution.
102
149
  #
103
150
  # @param workflow_class
@@ -115,10 +162,10 @@ module AWS
115
162
  end
116
163
 
117
164
 
118
- # @!visibility private
165
+ # @api private
119
166
  def self.default_option_class; WorkflowOptions; end
120
167
 
121
- # Gets the events for this workflow client
168
+ # Gets the events for this workflow client.
122
169
  #
123
170
  def events
124
171
  @execution.events if @execution
@@ -136,7 +183,7 @@ module AWS
136
183
  # Begins executing this workflow.
137
184
  #
138
185
  # @param input
139
- # Input to provide to the
186
+ # Input to provide to the workflow.
140
187
  #
141
188
  # @param [Hash, StartWorkflowOptions] block
142
189
  # A hash of {StartWorkflowOptions} to use for this workflow execution.
@@ -171,8 +218,8 @@ module AWS
171
218
  end
172
219
 
173
220
 
174
- # Called by {#signal_workflow_execution}
175
- # @!visibility private
221
+ # Called by {#signal_workflow_execution}.
222
+ # @api private
176
223
  def signal_external_workflow(signal_name, workflow_execution, &block)
177
224
  options = Utilities::interpret_block_for_options(SignalWorkflowOptions, block)
178
225
  options.signal_name ||= signal_name
@@ -183,8 +230,8 @@ module AWS
183
230
  @service.signal_workflow_execution(options.get_full_options)
184
231
  end
185
232
 
186
- # Called by {#signal_workflow_execution}
187
- # @!visibility private
233
+ # Called by {#signal_workflow_execution}.
234
+ # @api private
188
235
  def signal_internal_workflow(signal_name, workflow_execution, &block)
189
236
  get_decision_context
190
237
  options = Utilities::interpret_block_for_options(SignalWorkflowOptions, block)
@@ -215,8 +262,8 @@ module AWS
215
262
  end
216
263
 
217
264
 
218
- # Called by {#start_execution}
219
- # @!visibility private
265
+ # Called by {#start_execution}.
266
+ # @api private
220
267
  def start_internal_workflow(input = NoInput.new, &block)
221
268
  get_decision_context
222
269
  options = Utilities::interpret_block_for_options(StartWorkflowOptions, block)
@@ -288,8 +335,8 @@ module AWS
288
335
  end
289
336
 
290
337
 
291
- # Called by {#start_execution}
292
- # @!visibility private
338
+ # Called by {#start_execution}.
339
+ # @api private
293
340
  def start_external_workflow(input = NoInput.new, &block)
294
341
  options = Utilities::interpret_block_for_options(StartWorkflowOptions, block)
295
342
  options = Utilities::merge_all_options(@options, options)
@@ -350,19 +397,19 @@ module AWS
350
397
  end
351
398
 
352
399
 
353
- # Instances of WorkflowFactory are generated by {#workflow_factory}.
400
+ # Represents a workflow factory. Instances of `WorkflowFactory` are generated by {#workflow_factory}.
354
401
  class WorkflowFactory
355
402
 
356
403
 
357
- # Creates a new WorkflowFactory with the provided parameters. The construction parameters will be used for any
404
+ # Creates a new `WorkflowFactory` with the provided parameters. The construction parameters will be used for any
358
405
  # workflow clients generated by this workflow factory.
359
406
  #
360
407
  # @param service
361
408
  # The service to use for workflow clients generated by this workflow factory
362
409
  #
363
410
  # @param domain
364
- # The SWF [Domain](http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/Domain.html) to use for
365
- # workflow clients generated by this workflow factory
411
+ # The Amazon SWF [Domain](http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/Domain.html) to use for
412
+ # workflow clients generated by this workflow factory.
366
413
  #
367
414
  # @param block
368
415
  # A block of {StartWorkflowOptions} to use for clients generated by this workflow factory.
@@ -382,7 +429,7 @@ module AWS
382
429
  # Get a {WorkflowClient} with the parameters used in the construction of this {WorkflowFactory}.
383
430
  #
384
431
  # @return [WorkflowClient]
385
- # A workflow client, created with the parameters used when creating the {WorkflowFactory}.
432
+ # A workflow client created with the parameters used when creating the {WorkflowFactory}.
386
433
  #
387
434
  def get_client
388
435
  WorkflowClient.new(@service, @domain, @workflow_class, @options)
@@ -44,7 +44,7 @@ module AWS
44
44
  # Get the current time.
45
45
  #
46
46
  # @return [Time]
47
- # A `Time` object initialized to the the current time in milliseconds for a replay. This is the same time that
47
+ # A `Time` object initialized to the current time in milliseconds for a replay. This is the same time that
48
48
  # is provided by the `:replay_current_time_millis` attribute.
49
49
  #
50
50
  def current_time
@@ -16,10 +16,10 @@
16
16
  module AWS
17
17
  module Flow
18
18
 
19
- # Every workflow implementation needs to be a subclass of this class.
19
+ # Represents a workflow definition. Every workflow implementation needs to be a subclass of this class.
20
20
  #
21
- # Usually there should be no need to instantiate the class manually, as instead, the @execute method is called to
22
- # start the workflow (you can think of ths as having factory class methods).
21
+ # Usually there should be no need to instantiate the class manually. Instead, the @execute method is called to
22
+ # start the workflow. You can think of this class as having factory class methods.
23
23
  class WorkflowDefinition
24
24
 
25
25
  attr_reader :decision_helper
@@ -44,9 +44,9 @@ module AWS
44
44
  method_output.set(@instance.send(@workflow_method))
45
45
  else
46
46
  ruby_input = @converter.load input
47
- # Have to have *ruby_input in order to be able to handle sending
47
+ # Have to have `ruby_input` in order to be able to handle sending
48
48
  # arbitrary arguments correctly, as otherwise it will seem as if
49
- # @workflow_method will always have an arity of 1
49
+ # @workflow_method will always have an arity of 1.
50
50
  method_output.set(@instance.send(@workflow_method, *ruby_input))
51
51
  end
52
52
  end
@@ -41,7 +41,7 @@ module AWS
41
41
 
42
42
  def delete_workflow_definition(definition)
43
43
  FlowFiber.unset(FlowFiber.current, :decision_context)
44
- # Indicating to GC that these values are no longer needed
44
+ # Indicates to GC that these values are no longer needed.
45
45
  FlowFiber.local_variables.each_pair do |key, value|
46
46
  value = nil
47
47
  FlowFiber.local_variables.delete(key)
@@ -17,7 +17,7 @@ module AWS
17
17
  module Flow
18
18
  # This method is for internal use only and may be changed or removed
19
19
  # without prior notice. Use {#workflow_client} instead.
20
- # @!visibility private
20
+ # @api private
21
21
  def workflow_factory(client, domain, &options)
22
22
  WorkflowFactory.new(client, domain, options)
23
23
  end
@@ -13,21 +13,21 @@
13
13
  # permissions and limitations under the License.
14
14
  ##
15
15
 
16
- # This file contains AsyncBacktrace, which takes care of decorating and properly filtering backtraces
16
+ # This file contains AsyncBacktrace, which takes care of decorating and properly filtering backtraces.
17
17
 
18
18
  module AWS
19
19
  module Flow
20
20
  module Core
21
- # @!visibility private
21
+ # @api private
22
22
  class AsyncBacktrace
23
23
 
24
- # @!visibility private
24
+ # @api private
25
25
  def initialize(parent, backtrace)
26
26
  @backtrace = AsyncBacktrace.filter(backtrace)
27
27
  @parent = parent
28
28
  end
29
29
 
30
- # @!visibility private
30
+ # @api private
31
31
  def backtrace
32
32
  if @parent
33
33
  AsyncBacktrace.merge(@backtrace, @parent.backtrace)
@@ -36,10 +36,10 @@ module AWS
36
36
  end
37
37
  end
38
38
 
39
- # @!visibility private
39
+ # @api private
40
40
  class << self
41
41
 
42
- # @!visibility private
42
+ # @api private
43
43
  def create(parent, frames_to_skip)
44
44
 
45
45
  unless @disable_async_backtrace
@@ -48,21 +48,22 @@ module AWS
48
48
  end
49
49
  end
50
50
 
51
- # @!visibility private
51
+ # @api private
52
52
  def create_from_exception(parent, exception)
53
53
  unless @disable_async_backtrace
54
54
  AsyncBacktrace.new(parent, exception.backtrace);
55
55
  end
56
56
  end
57
57
 
58
- # Remove all framework related frames after application frames. Keep framework frames before application
58
+ # Removes all framework-related frames after application frames. Keep framework frames before application
59
59
  # frames.
60
60
  #
61
61
  # @todo
62
62
  # The correct implementation should not have framework frames before application frames as it is expected to
63
- # call Kernel.caller with the correct number. But in cases when due to changes this number is not correct
63
+ # call Kernel.caller with the correct number. In cases when this number is not correct,
64
64
  # the frames are kept to not create confusion.
65
65
  #
66
+ # @api private
66
67
  def filter(backtrace)
67
68
  if @disable_filtering
68
69
  backtrace
@@ -71,7 +72,7 @@ module AWS
71
72
  end
72
73
  end
73
74
 
74
- # @!visibility private
75
+ # @api private
75
76
  def merge(*backtraces)
76
77
  result = []
77
78
  backtraces.each do | b |
@@ -83,27 +84,27 @@ module AWS
83
84
  result
84
85
  end
85
86
 
86
- # @!visibility private
87
+ # @api private
87
88
  def disable_filtering
88
89
  @disable_filtering = true
89
90
  end
90
91
 
91
- # @!visibility private
92
+ # @api private
92
93
  def enable_filtering
93
94
  @disable_filtering = false
94
95
  end
95
96
 
96
- # @!visibility private
97
+ # @api private
97
98
  def disable
98
99
  @disable_async_backtrace = true
99
100
  end
100
101
 
101
- # @!visibility private
102
+ # @api private
102
103
  def enable
103
104
  @disable_async_backtrace = false
104
105
  end
105
106
 
106
- # @!visibility private
107
+ # @api private
107
108
  def caller(skip)
108
109
  random_var = Kernel.caller 0
109
110
  this_stuff = 1.upto(6).map { |x| Kernel.caller(x) }
@@ -113,11 +114,11 @@ module AWS
113
114
 
114
115
  private
115
116
 
116
- # @!visibility private
117
+ # @api private
117
118
  def do_filter(backtrace)
118
119
  return nil unless backtrace
119
- # keep asynchrony frames at the top of the backtrace only
120
- # then cut all frames starting from asynchrony frame
120
+ # Keep asynchrony frames at the top of the backtrace only
121
+ # then cut all frames starting from asynchrony frame.
121
122
  skip_asynchrony_frames = false
122
123
  @backtrace = backtrace.take_while do |frame|
123
124
  if ! $RUBY_FLOW_FILES.select {|file| Regexp.new(file) =~ frame}.empty?