feat: Add pipeline run parallelism config
Summary
- Replace the previous semaphore/mutex knobs with a single
pipeline_run_parallelismoption ondsl.PipelineConfig. This lets the API server own the Argo semaphore lifecycles instead of expecting users to edit shared ConfigMaps—eliminating a Kubernetes-heavy workflow and ensuring keys align to<pipeline>/<version>. - Thread the new field through SDK, compiler, and backend so the requested concurrency cap lands in Argo’s
spec.parallelism. - Add the
pipeline_with_run_parallelismsample (three-itemParallelFor) to exercise the setting while leaving the workspace fixture focused on workspace behaviour.
Validation
- SDK and backend goldens now include the updated sample, showing consistent IR and Argo outputs with the parallelism limit.
- Built custom API server and driver images from this branch, loaded them into a kind cluster, ran the sample, and confirmed that the number of simultaneously running component pods never exceeded the configured limit.
- Added the parallelism validation helper to the e2e suite (
e2e_utils.go+ invocation inpipeline_e2e_test.go), rebuilt the test cluster with the fresh backend images, exercised the focused pipeline_run_parallelism scenario, and then ran the end-to-end suite to confirm the new check passes with the concurrency cap enforced.
Follow up to PR - remove unused semaphore_key and mutex_name fields
Hi @sduvvuri1603. Thanks for your PR.
I'm waiting for a kubeflow member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.
Once the patch is verified, the new status will be reflected by the ok-to-test label.
I understand the commands that are listed here.
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.
/retest
@sduvvuri1603: Cannot trigger testing until a trusted user reviews the PR and leaves an /ok-to-test message.
In response to this:
/retest
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.
/ok-to-test
/retest
@sduvvuri1603 can you please add what this config is suppose to do, to the PR description? and a section about how you;ve validated the functionality.
/hold
ignore the accidental approve
[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: Once this PR has been reviewed and has the lgtm label, please ask for approval from humairak. For more information see the Kubernetes Code Review Process.
The full list of commands accepted by this bot can be found here.
Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment
/retest
/retest
/retest
/retest
Thank you for the clarification @sduvvuri1603.
... for persistence/audit purposes only
Is it really a requirement? The parallelism is already persisted in the pipeline spec (which is stored when the version is created). What scenario requires reading from this ConfigMap rather than the pipeline spec?
Changing logic to make sure argo reads from configmap and I use the code reference of "Using a semaphore configured by a ConfigMap"
/retest
/retest