Project

General

Profile

Actions

Bug #25723

closed

Foreman may create duplicate CreateRssNotifications tasks after restarting foreman tasks

Added by Adam Ruzicka over 5 years ago. Updated almost 4 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
Notifications
Target version:
-
Difficulty:
Triaged:
No
Fixed in Releases:
Found in Releases:

Description

Cloned from https://bugzilla.redhat.com/show_bug.cgi?id=1654347

Description of problem:
Foreman may create duplicate CreateRssNotifications, CreatePulpDiskSpaceNotifications or SendExpireSoonNotifications when restart foreman-tasks.

  1. su - postgres c "psql -d foreman -c 'select label,count(label),state from foreman_tasks_tasks where state <> '\''stopped'\'' group by label,state;'"
    label | count | state
    ---------------------------------------
    ------------------
    CreateRssNotifications | 2 | scheduled
    CreatePulpDiskSpaceNotifications | 1 | scheduled
    SendExpireSoonNotifications | 1 | scheduled

The "spawn_if_missing" function is looking for task that is in "scheduled" state during the dynflow startup. If no "CreateRssNotifications" is in "schdeduled" state, then create one. I suspect that the task was not in "scheduled" state previously before Dynflow got terminated and cause Dynflow to create a duplicate task during startup.

/usr/share/foreman/app/jobs/application_job.rb

def self.spawn_if_missing(world)
return if (Foreman.in_rake? && !Foreman.in_rake?('dynflow:executor')) || Rails.env.test?
pending_jobs = world.persistence.find_execution_plans(filters: { :state => 'scheduled' })
scheduled_job = pending_jobs.select do |job|
delayed_plan = world.persistence.load_delayed_plan job.id
next unless delayed_plan.present?
arg = delayed_plan.to_hash[:serialized_args].first
arg.is_a?(Hash) && arg['job_class'] == self.to_s
end
  1. Schedule the job only if it doesn't exit yet
    self.perform_later if scheduled_job.blank?
    end
Actions #1

Updated by Ondřej Ezr almost 4 years ago

  • Project changed from foreman-tasks to Foreman
  • Subject changed from Foreman may create duplicate CreateRssNotifications tasks after restarting foreman tasks to Foreman may create duplicate CreateRssNotifications tasks after restarting foreman tasks

Moving this to foreman as the related code lives in foreman.

Actions #2

Updated by Adam Ruzicka almost 4 years ago

  • Status changed from New to Ready For Testing
  • Assignee set to Adam Ruzicka
Actions #3

Updated by The Foreman Bot almost 4 years ago

  • Pull request https://github.com/theforeman/foreman/pull/7618 added
Actions #4

Updated by The Foreman Bot almost 4 years ago

  • Fixed in Releases 2.1.0 added
Actions #5

Updated by Adam Ruzicka almost 4 years ago

  • Status changed from Ready For Testing to Closed
Actions #6

Updated by Amit Upadhye almost 4 years ago

  • Category set to Notifications
Actions

Also available in: Atom PDF