Sha256: 3b24bd43c64014876376f9807b8d2ae27a1646a078c6d5d8f50f68219c965de9

Contents?: true

Size: 1.44 KB

Versions: 43

Compression:

Stored size: 1.44 KB

Contents

# DelayedJob is a unique diagnostic that creates a series of delayed jobs
# in the hopes that enough nodes will touch these jobs to determine
# if delayed job workers are running the latest application version
#
# `DELAYED_VER` environment variable should be set in the
# delayed jobs initializer.
#
module Marty::Diagnostic; class DelayedJobVersion < Base
  self.aggregatable = false

  def self.generate
    raise 'DelayedJob cannot be called with local scope.' if scope == 'local'

    raise 'DELAYED_VER environment variable has not been initialized.' if
      ENV['DELAYED_VER'].nil?

    total_workers = Node.get_target_connections('delayed').count

    raise 'No delayed jobs are running.' if total_workers.zero?

    # we will only iterate by half of the total delayed workers to avoid
    # excess use of delayed job time
    total_workers = (total_workers/2).zero? ? 1 : total_workers/2

    d_engine = Marty::ScriptSet.new.get_engine("Diagnostics")
    res = d_engine.
            evaluate('VersionDelay', 'result', {'count' => total_workers-1})

    # merge results, remove duplicates, and construct "aggregate" object
    res.each_with_object({}){
      |r, hash|
      hash[r[0]] ||= []
      hash[r[0]] << r[1]
    }.map {
      |node, result|

      versions = result.uniq
      status = versions.count == 1 && versions[0] == ENV['DELAYED_VER']

      {node => {'Version' => create_info(versions.join("\n"), status)}}
    }.reduce(:deep_merge)
  end
end
end

Version data entries

43 entries across 43 versions & 1 rubygems

Version Path
marty-2.5.2 other/marty/diagnostic/delayed_job_version.rb
marty-2.5.1 other/marty/diagnostic/delayed_job_version.rb
marty-2.5.0 other/marty/diagnostic/delayed_job_version.rb
marty-2.4.9 other/marty/diagnostic/delayed_job_version.rb
marty-2.4.8 other/marty/diagnostic/delayed_job_version.rb
marty-2.4.7 other/marty/diagnostic/delayed_job_version.rb
marty-2.4.6 other/marty/diagnostic/delayed_job_version.rb
marty-2.4.5 other/marty/diagnostic/delayed_job_version.rb
marty-2.4.4 other/marty/diagnostic/delayed_job_version.rb
marty-2.4.3 other/marty/diagnostic/delayed_job_version.rb
marty-2.4.2 other/marty/diagnostic/delayed_job_version.rb
marty-2.4.1 other/marty/diagnostic/delayed_job_version.rb
marty-2.4.0 other/marty/diagnostic/delayed_job_version.rb
marty-2.3.15 other/marty/diagnostic/delayed_job_version.rb
marty-2.3.14 other/marty/diagnostic/delayed_job_version.rb
marty-2.3.13 other/marty/diagnostic/delayed_job_version.rb
marty-2.3.12 other/marty/diagnostic/delayed_job_version.rb
marty-2.3.11 other/marty/diagnostic/delayed_job_version.rb
marty-2.3.10 other/marty/diagnostic/delayed_job_version.rb
marty-2.3.9 other/marty/diagnostic/delayed_job_version.rb