Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: perform selected strategy for isbsvc fields to support PPND #317

Draft
wants to merge 26 commits into
base: main
Choose a base branch
from

Conversation

dpadhiar
Copy link
Contributor

@dpadhiar dpadhiar commented Oct 2, 2024

Fixes #248

Modifications

Integrates the USDE logic to derive an upgrade strategy (that we currently have for PipelineRollouts) into the ISBServiceRollout reconciliation process.

Verification

Ran make test to verify unit tests are passing.

Ran make test-e2e locally and on CI to see that updating with and without excluded fields works properly.

@dpadhiar dpadhiar changed the title feat: perform selected strategy for isbsvc fields to support PPND (WIP) feat: perform selected strategy for isbsvc fields to support PPND Oct 4, 2024
@dpadhiar dpadhiar marked this pull request as ready for review October 4, 2024 21:25
@@ -278,32 +302,60 @@ func (r *ISBServiceRolloutReconciler) processExistingISBService(ctx context.Cont
r.processISBServiceStatus(ctx, existingISBServiceDef, isbServiceRollout)

// if I need to update or am in the middle of an update of the ISBService, then I need to make sure all the Pipelines are pausing
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you update the comment to remove "need to update or"?

@juliev0
Copy link
Collaborator

juliev0 commented Oct 4, 2024

nice job

@dpadhiar dpadhiar requested a review from juliev0 October 7, 2024 21:26
Signed-off-by: Dillen Padhiar <[email protected]>
@dpadhiar dpadhiar marked this pull request as draft October 8, 2024 17:19
Signed-off-by: Dillen Padhiar <[email protected]>
@juliev0
Copy link
Collaborator

juliev0 commented Oct 8, 2024

Spoke to @dpadhiar and when he gets time he'll explore why the previous test for updating isbsvc with PPND is sometimes failing before we merge this. (Merging this is not critically important to be done by Q1)

@juliev0
Copy link
Collaborator

juliev0 commented Oct 8, 2024

Actually, I went through the artifacts I had when I saw the failure locally - not sure if numaplane is really doing anything wrong - we ultimately need to get the fixes from numaflow and try with that. I'm still a little nervous about merging this in since we weren't seeing this failure before.

// if not, should we set one?
if !inProgressStrategySet {
if userPreferredStrategy == config.PPNDStrategyID {
if upgradeStrategyType == apiv1.UpgradeStrategyPPND {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: I know you copied this from my redundant code in PipelineRolloutController, so my bad, but I believe the check for userPreferredStrategy here and below may be unnecessary as it's happening within ResourceNeedsUpdating(). We probably don't need to get the value for userPreferredStrategy above at all.

existingStatefulSetDef: createDefaultISBStatefulSet("2.10.11", true),
existingPipeline: createDefaultPipelineOfPhase(numaflowv1.PipelinePhasePaused, map[string]string{}),
expectedRolloutPhase: apiv1.PhaseDeployed,
existingInProgressStrategy: nil,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: I'm thinking in this case the incoming InProgressStrategy would probably be PPND

verifyInProgressStrategy(pipelineRolloutName, apiv1.UpgradeStrategyNoOp)
verifyPipelineStatusConsistently(Namespace, pipelineName, func(retrievedPipelineSpec numaflowv1.PipelineSpec, retrievedPipelineStatus numaflowv1.PipelineStatus) bool {
return retrievedPipelineStatus.Phase != numaflowv1.PipelinePhasePaused
})
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh, this looks like a Consistently is being executed within a Consistently. Instead of calling verifyPipelineStatusConsistently(), can we just check the Pipeline phase directly?

Comment on lines +584 to +591
verifyISBSvcRolloutReady(isbServiceRolloutName)

verifyISBSvcReady(Namespace, isbServiceRolloutName, 3)

verifyInProgressStrategyISBService(Namespace, isbServiceRolloutName, apiv1.UpgradeStrategyNoOp)
verifyInProgressStrategy(pipelineRolloutName, apiv1.UpgradeStrategyNoOp)
verifyPipelineRunning(Namespace, pipelineName, 3)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

some of these are being checked in the Consistently block above I think, and we don't need them ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Integrate USDE logic into Rollout controllers to support PPND - perform selected strategy for isbsvc fields
2 participants