Sha256: 7e02eaf8b0c281bc24d555e889961dc02b6e762b55994b467a405f900b47a14d
Contents?: true
Size: 1.44 KB
Versions: 2
Compression:
Stored size: 1.44 KB
Contents
# frozen_string_literal: true module Dynflow module Actors class ExecutionPlanCleaner attr_reader :core def initialize(world, options = {}) @world = world @options = options end def core_class Core end def spawn Concurrent::Promises.resolvable_future.tap do |initialized| @core = core_class.spawn(:name => 'execution-plan-cleaner', :args => [@world, @options], :initialized => initialized) end end def clean! core.tell([:clean!]) end class Core < Actor 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 def start set_clock clean! end 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 def report(plans) @world.logger.info("Execution plan cleaner removing #{plans.count} execution plans.") end def set_clock @world.clock.ping(self, @poll_interval, :start) end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dynflow-1.9.0 | lib/dynflow/actors/execution_plan_cleaner.rb |
dynflow-1.8.3 | lib/dynflow/actors/execution_plan_cleaner.rb |