Class: BeetleETL::AsyncStepRunner

Inherits:
Object
  • Object
show all
Defined in:
lib/beetle_etl/step_runner/async_step_runner.rb

Instance Method Summary collapse

Constructor Details

#initialize(steps) ⇒ AsyncStepRunner

Returns a new instance of AsyncStepRunner.



4
5
6
7
8
9
10
11
# File 'lib/beetle_etl/step_runner/async_step_runner.rb', line 4

def initialize(steps)
  @dependency_resolver = DependencyResolver.new(steps)
  @steps = steps

  @queue = Queue.new
  @completed = Set.new
  @running = Set.new
end

Instance Method Details

#runObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/beetle_etl/step_runner/async_step_runner.rb', line 13

def run
  results = {}

  until all_steps_complete?
    runnables.each do |step|
      run_step_async(step)
      mark_step_running(step.name)
    end

    table_name, step_name, step_data = @queue.pop

    unless results.has_key?(table_name)
      results[table_name] = {}
    end

    results[table_name][step_name] = step_data
    mark_step_completed(step_name)
  end

  results
end