Actions
Bug #25723
closedForeman may create duplicate CreateRssNotifications tasks after restarting foreman tasks
Difficulty:
Triaged:
No
Bugzilla link:
Pull request:
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.
- 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
- Schedule the job only if it doesn't exit yet
self.perform_later if scheduled_job.blank?
end
Updated by Ondřej Ezr over 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.
Updated by Adam Ruzicka over 4 years ago
- Status changed from New to Ready For Testing
- Assignee set to Adam Ruzicka
Updated by The Foreman Bot over 4 years ago
- Pull request https://github.com/theforeman/foreman/pull/7618 added
Updated by Adam Ruzicka over 4 years ago
- Status changed from Ready For Testing to Closed
Applied in changeset 668853b9abf0fc10453e1c2c256caf69d5d92492.
Actions