Bug #39327
openRefresh RollingCV Repo task hangs when assigning multiple environments to RollingCV
Description
If the RollingCV has multiple lifecycle environmnents, and you try to perform a sync on the repository included in RollingCV, there is a high chance that one of the Refresh RollingCV Repo tasks will hang, which will cause the repository to stay locked, thus unable to be interact with it, preventing future syncs and modifications to it. The task will remain in state: planned, with progress at 100%, and result pending (picture in attachments). In dynflow console everything appears completed, and the sync itself finishes, but prevents future syncs.
Resulting states:
plan.state :stopped, plan.result :success
task.state 'planned', task.result 'pending'
Working theory:
When a library source syncs and has multiple rolling clones across environments / Rolling CVs, RefreshRollingRepo is spawned once per clone in parallel. The clone-update path likely ends with a callback or event keyed on the shared root repo (Pulp publication regen? applicability? content count?). When N siblings try to deliver that event in parallel, only one’s wrapper-state-update completes cleanly; the others’ completion events get lost. Sources never wedge because they aren’t competing with siblings on shared state.
Current walkaround to the issue is assign RollingCV only to Library, which generates only one Refresh RollingCV Repo task.
Issue was also discussed on the Foreman forum:
https://community.theforeman.org/t/refresh-rollingcv-repo-task-hangs-causing-repos-to-not-up/46243
Files