Bug #24077

Uncaught exception when pulp task isnt created from dynflow step

Added by Adam Ruzicka over 2 years ago. Updated about 2 years ago.

Target version:
Bugzilla link:
Pull request:
Fixed in Releases:
Found in Releases:


Cloned from

Description of problem:
When a Content Host:
- installs package (or does any other activity that triggers Actions::Katello::Host::UploadPackageProfile task)
- and promptly unregisters itself,

the UploadPackageProfile task can fail on Actions::Pulp::Consumer::GenerateApplicability step as pulp returns "Pulp consumer 8b042949-3daa-49a2-9827-21ccd982227b not found" instead of task ID for the regenerate_applicability task. This is not further handled properly by katello or foreman tasks, since:

- task itself raises uncaught exception (see below)
- sometimes the task ends up in paused/error state (this is bit tricky to reproduce)

Please improve this error handling.

Version-Release number of selected component (if applicable):

How reproducible:
100% (the error)
20% (the stuck task)

Steps to Reproduce:
1. Register a system to Satellite, attach a subscription
2. Artificially send package profile (just for the sake of speeding up the reproducer; it is a race condition; the real use case behind involves package removal at this state, what triggers one profile upload that might repro the bug)

for i in $(seq 1 20); do katello-package-upload --force & done

3. Few seconds after that, unregister the system

4. Optionally, for reproducing also the paused/error tasks, restart foreman-tasks service few seconds after system unregistered. (this step isnt required for the uncaught exception)

5. Check tasks with error result, optionally in paused/error state/result.

Actual results:
5. There will be always error-result tasks (that's OK) with exception (that's not OK):


undefined method `each' for true:TrueClass

- "/opt/theforeman/tfm/root/usr/share/gems/gems/katello-
- "/opt/theforeman/tfm/root/usr/share/gems/gems/dynflow-0.8.34/lib/dynflow/action/polling.rb:83:in
- "/opt/theforeman/tfm/root/usr/share/gems/gems/dynflow-0.8.34/lib/dynflow/action/polling.rb:18:in
- "/opt/theforeman/tfm/root/usr/share/gems/gems/dynflow-0.8.34/lib/dynflow/action/cancellable.rb:13:in
- "/opt/theforeman/tfm/root/usr/share/gems/gems/katello-
- "/opt/theforeman/tfm/root/usr/share/gems/gems/dynflow-0.8.34/lib/dynflow/action.rb:518:in
`block (3 levels) in execute_run'"
- "/opt/theforeman/tfm/root/usr/share/gems/gems/dynflow-0.8.34/lib/dynflow/middleware/stack.rb:26:in
- "/opt/theforeman/tfm/root/usr/share/gems/gems/dynflow-0.8.34/lib/dynflow/middleware.rb:18:in
- "/opt/theforeman/tfm/root/usr/share/gems/gems/dynflow-0.8.34/lib/dynflow/middleware.rb:31:in
- "/opt/theforeman/tfm/root/usr/share/gems/gems/dynflow-0.8.34/lib/dynflow/middleware/stack.rb:22:in
- "/opt/theforeman/tfm/root/usr/share/gems/gems/dynflow-0.8.34/lib/dynflow/middleware/stack.rb:26:in

Optionally, if you are unlucky enough, such a task is paused and hangs paused forever.

Expected results:
Provide better error text (i.e. pass the "Pulp consumer 8b042949-3daa-49a2-9827-21ccd982227b not found." error text) in the dynflow external task error text.

Ensure such task is not paused when foreman-tasks is being restarted while processing this task.

Additional info:

Related issues

Related to Katello - Bug #21797: do not log stack trace if generateapplicability generates a 404Closed2017-11-28


#1 Updated by Adam Ruzicka over 2 years ago

  • Related to Bug #21797: do not log stack trace if generateapplicability generates a 404 added

#2 Updated by Andrew Kofink over 2 years ago

  • Legacy Backlogs Release (now unused) set to 338

#3 Updated by Jonathon Turel about 2 years ago

  • Target version changed from Katello 3.7.0 to Katello Backlog

Also available in: Atom PDF