Sha256: a61c6d23426761191327c3819f7a7cb5dd011ef37ee0837b9a53c60e608d8806

Contents?: true

Size: 1.37 KB

Versions: 9

Compression:

Stored size: 1.37 KB

Contents

require 'json'

module Rearview
  class MonitorTask
    class MonitorTaskError < StandardError; end;
    include Celluloid
    include Rearview::Logger
    attr_reader :job,:timer,:initial_delay
    def initialize(job,initial_delay=0,start=true)
      logger.debug "#{self} intialize initial_delay:#{initial_delay} start:#{start}"
      @job = job
      @initial_delay = initial_delay
      schedule if start
    end
    def schedule
      logger.debug "#{self} schedule"
      if ActiveRecord::Base.connection_pool.active_connection?
        ActiveRecord::Base.connection_pool.release_connection
      end
      # TODO is this really necessary?
      if(@timer)
        @timer.cancel
      end
      delay = @job.delay + @initial_delay
      logger.debug "#{self} next run in #{delay}s"
      @timer = after(delay) { self.run }
    end
    def run
      logger.debug "#{self} run"
      @initial_delay = 0
      result = Rearview::MonitorRunner.run(@job.metrics, @job.monitor_expr, @job.minutes)
      ActiveRecord::Base.connection_pool.with_connection do
        @job.last_run = Time.now.utc
        Rearview::ResultsHandler.new(@job,result).run
      end
    rescue
      logger.error "#{self} run failed: #{$!}\n#{$@.join("\n")}"
      ActiveRecord::Base.connection_pool.with_connection do
        @job.last_run = Time.now.utc
        @job.error!
      end
    ensure
      schedule
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
rearview-1.2.3-jruby lib/rearview/monitor_task.rb
rearview-1.2.2.rc.2-jruby lib/rearview/monitor_task.rb
rearview-1.2.2.rc.1-jruby lib/rearview/monitor_task.rb
rearview-1.2.1-jruby lib/rearview/monitor_task.rb
rearview-1.2.0-jruby lib/rearview/monitor_task.rb
rearview-1.1.2-jruby lib/rearview/monitor_task.rb
rearview-1.1.1-jruby lib/rearview/monitor_task.rb
rearview-1.1.0-jruby lib/rearview/monitor_task.rb
rearview-1.0.3.rc.4-jruby lib/rearview/monitor_task.rb