class Dynflow::Actors::ExecutionPlanCleaner::Core

Public Class Methods

new(world, options = {}) click to toggle source
# File lib/dynflow/actors/execution_plan_cleaner.rb, line 29
def initialize(world, options = {})
  @world = world
  default_age = 60 * 60 * 24 # One day by default
  @poll_interval = options.fetch(:poll_interval, default_age)
  @max_age = options.fetch(:max_age, default_age)
  start
end

Public Instance Methods

clean!() click to toggle source
# File lib/dynflow/actors/execution_plan_cleaner.rb, line 42
def clean!
  plans = @world.persistence.find_old_execution_plans(Time.now.utc - @max_age)
  report(plans)
  @world.persistence.delete_execution_plans(uuid: plans.map(&:id))
end
report(plans) click to toggle source
# File lib/dynflow/actors/execution_plan_cleaner.rb, line 48
def report(plans)
  @world.logger.info("Execution plan cleaner removing #{plans.count} execution plans.")
end
set_clock() click to toggle source
# File lib/dynflow/actors/execution_plan_cleaner.rb, line 52
def set_clock
  @world.clock.ping(self, @poll_interval, :start)
end
start() click to toggle source
# File lib/dynflow/actors/execution_plan_cleaner.rb, line 37
def start
  set_clock
  clean!
end