Project

Profile

Help

Refactor #4173

Change the multilayered design to use Futures to handle nested content

Added by amacdona@redhat.com over 1 year ago. Updated 7 months 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

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 - CURRENTRELEASE<a title="Actions" class="icon-only icon-actions js-contextmenu" href="#">Actions</a>
Blocks Container Support - Refactor #4178: Update sync to use ContentSaver StageCLOSED - CURRENTRELEASE

<a title="Actions" class="icon-only icon-actions js-contextmenu" href="#">Actions</a>

History

#1 Updated by ipanova@redhat.com over 1 year ago

will it be a change in the progress bar or stages pulpcore code? or in docker plugin?

#2 Updated by amacdona@redhat.com over 1 year ago

I didn't dig too deep into this, I was more focused on getting sync to work. I hope that these changes can exist only in the docker code. If it can't be done, we may need to make changes to pulpcore.

#3 Updated by amacdona@redhat.com over 1 year ago

  • Sprint Candidate changed from No to Yes

#4 Updated by ipanova@redhat.com over 1 year ago

  • Groomed changed from No to Yes

#5 Updated by jortel@redhat.com over 1 year ago

  • Groomed changed from Yes to No

#6 Updated by jortel@redhat.com over 1 year ago

  • Sprint Candidate changed from Yes to No

#7 Updated by dkliban@redhat.com over 1 year ago

The problem in the original description is due to a limitation of the Stages API. If the stages API allowed stages that come after the Artifact download stage to send items into the queue for the Artifact download stage, the Progress Bar inside the Artifact download stage would report accurate results. bmbouter is going to add another story to add support for such a use case. Once that is implemented this story should be updated to state that pulp_docker needs to be refactored to use that feature.

#8 Updated by amacdona@redhat.com over 1 year ago

  • Blocked by Issue #4296: Stages API could deadlock when "discovering" content due to minsize added

#9 Updated by amacdona@redhat.com over 1 year ago

  • Tracker changed from Story to Refactor
  • Subject changed from As a user my sync task tracks progress with the ProgressBar to Change the multilayered design to use Futures to handle nested content
  • Description updated (diff)

#10 Updated by amacdona@redhat.com over 1 year ago

  • Status changed from NEW to ASSIGNED
  • Assignee set to amacdona@redhat.com

#11 Updated by amacdona@redhat.com over 1 year ago

  • Status changed from ASSIGNED to NEW

I will not have a chance to do this for at least 2 weeks, so I am putting this back. If others want to take this, please feel free!

#12 Updated by amacdona@redhat.com over 1 year ago

#13 Updated by ipanova@redhat.com over 1 year ago

  • Status changed from NEW to ASSIGNED
  • Assignee changed from amacdona@redhat.com to ipanova@redhat.com
  • Groomed changed from No to Yes
  • Sprint Candidate changed from No to Yes
  • Sprint set to Sprint 49

#14 Updated by rchan over 1 year ago

  • Sprint changed from Sprint 49 to Sprint 50

#15 Updated by ipanova@redhat.com over 1 year ago

  • Status changed from ASSIGNED to POST

#16 Updated by rchan over 1 year ago

  • Sprint changed from Sprint 50 to Sprint 51

#17 Updated by ipanova@redhat.com over 1 year ago

  • Status changed from POST to MODIFIED
  • % Done changed from 0 to 100

Applied in changeset commit:pulp_docker|568c4a350964a91cb8c4fedd86e255e29537c19e.

#18 Updated by bmbouter over 1 year ago

  • Tags deleted (Pulp 3)

#19 Updated by ipanova@redhat.com 9 months ago

  • Project changed from Docker Support to Container Support

#20 Updated by bmbouter 8 months ago

  • Status changed from MODIFIED to CLOSED - CURRENTRELEASE

#21 Updated by ipanova@redhat.com 7 months ago

  • Sprint/Milestone set to 1.0.0

Please register to edit this issue

Also available in: Atom PDF