Sha256: cb253bb180861e4b2e7f29b9f64315d3d4f70573b35c385690030535a9147af6

Contents?: true

Size: 661 Bytes

Versions: 2

Compression:

Stored size: 661 Bytes

Contents

class JobFailures
  attr_reader :job_id

  def initialize(job_id)
    @job_id = job_id
  end

  def job
    @job ||= RocketJob::Job.find(job_id)
  end

  def list
    @slice_errors ||= job.input.collection.aggregate(
      [
        {
          '$group' => {
            _id:      { error_class: '$exception.class_name' },
            messages: { '$addToSet' => '$exception.message' },
            count:    { '$sum' => 1 }
          },
        }
      ]
    )
  end

  def for_error(error_type, page_offset=0)
    query  = { 'state' => 'failed', 'exception.class_name' => error_type }
    @job.input.collection.find(query).limit(1).skip(page_offset)
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rocketjob_mission_control-1.2.1 app/models/job_failures.rb
rocketjob_mission_control-1.2.0 app/models/job_failures.rb