Project

Profile

Help

Refactor #4173

closed

Change the multilayered design to use Futures to handle nested content

Added by amacdona@redhat.com over 5 years ago. Updated about 4 years ago.

Status:
CLOSED - CURRENTRELEASE
Priority:
Normal
Sprint/Milestone:
Start date:
Due date:
% Done:

100%

Estimated time:
Platform Release:
Groomed:
Yes
Sprint Candidate:
Yes
Tags:
Sprint:
Sprint 51
Quarter:

Description

With the addition of DeclarativeContent.future, we ought to be able to use that to handle any nested content without loops or the layered pipeline we currently use. With that refactor in place, the pipeline will be flat and each stage will only need to be used once, which will eliminate the need for reentrant ProgressBars described previously.

A previous commit for pulp_deb used this design pattern, and will be helpful for the implementation here:
https://github.com/pulp/pulp_deb/blob/de4539b1b213317ec710c83a5fc8a4eaf0dcf019/pulp_deb/app/tasks/synchronizing.py

It should be noted that pulp_deb no longer uses that pattern to get around the min_size deadlocking problem, so I'm going to set 4296 as as blocker. https://pulp.plan.io/issues/4296

Current implementation does not use the ProgessBar. This is because the ProgressBar returns unexpected results when the same Stage is used multiple times as we do in Docker sync.


Related issues

Blocked by Pulp - Issue #4296: Stages API could deadlock when "discovering" content due to minsizeCLOSED - CURRENTRELEASEmdellwegActions
Blocks Container Support - Refactor #4178: Update sync to use ContentSaver StageCLOSED - CURRENTRELEASEipanova@redhat.com

Actions

Also available in: Atom PDF