Skip to content

fix(job): skip job conflict check during dry-run manifest generation - #6520

Merged
Neelabh94 merged 1 commit into
GoogleCloudPlatform:developfrom
ctk-pr-bot:fix/skip-job-conflicts-on-dry-run
Oct 19, 2026
Merged

Neelabh94 merged 1 commit into
GoogleCloudPlatform:developfrom
ctk-pr-bot:fix/skip-job-conflicts-on-dry-run

Conversation

@ctk-pr-bot

@ctk-pr-bot ctk-pr-bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Summary

Skip validateJobConflicts in GKEOrchestrator.SubmitJob when job.DryRunManifest != "" (--dry-run-out).

When gcluster job submit --dry-run-out <path> is invoked, the CLI only renders and saves the Kubernetes JobSet manifest locally and does not submit the workload to the cluster. Previously, SubmitJob still ran validateJobConflicts(job.WorkloadName, ...) before generating the manifest, causing dry-run manifest generation to fail with job with name '<name>' already exists in state '<state>' whenever a previous or active JobSet with the same name existed on the cluster (for example during post-run inspection or cleanup workflows).

All other cluster-state validations and side effects in SubmitJob (ValidateClusterState, verifyCheckpointConfigurationCR, ensureMTCWorkloadIdentity, RunStorageProfilePreflight, printConsoleLinks, and awaitJobCompletion) already check job.DryRunManifest == "". Guarding validateJobConflicts with if job.DryRunManifest == "" makes dry-run behavior consistent.

Testing

  • Added TestSubmitJob_SkipsConflictCheckOnDryRun in pkg/orchestrator/gke/gke_job_orchestrator_test.go verifying that:
    1. SubmitJob with DryRunManifest set succeeds and writes the manifest even when a JobSet with the same name already exists on the cluster.
    2. SubmitJob without DryRunManifest continues to fail with the job conflict error when a JobSet with the same name already exists.

@ctk-pr-bot
ctk-pr-bot requested a review from a team as a code owner October 19, 2026 07:20
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request improves the reliability of the dry-run manifest generation process in the GKE orchestrator. By bypassing the job conflict check during dry-run operations, users can now generate manifests locally without being blocked by existing job states on the cluster, aligning the behavior with other existing validation guards.

Highlights

  • Dry-run consistency: Updated GKEOrchestrator.SubmitJob to skip the job conflict validation when a dry-run manifest is requested.
  • Regression testing: Added a new test case, TestSubmitJob_SkipsConflictCheckOnDryRun, to ensure dry-run operations succeed even if a job with the same name exists, while maintaining strict conflict checks for standard submissions.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩

@github-actions github-actions Bot added the external PR from external contributor label Oct 19, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request updates the GKE job orchestrator to skip the job conflict validation check during a dry-run (when DryRunManifest is set). Additionally, it introduces unit tests to verify that dry-runs succeed when a job with the same name already exists, whereas normal submissions correctly fail. I have no feedback to provide as the implementation is clean and well-tested.

@Neelabh94 Neelabh94 added the release-chore To not include into release notes label Oct 19, 2026
Neelabh94
Neelabh94 previously approved these changes Oct 19, 2026
@aslam-quad

Copy link
Copy Markdown
Contributor

/gcbrun

@aslam-quad

Copy link
Copy Markdown
Contributor

/gcbrun

@Neelabh94 Neelabh94 changed the title fix(gke): skip job conflict check during dry-run manifest generation fix(job): skip job conflict check during dry-run manifest generation Oct 19, 2026
@Neelabh94
Neelabh94 merged commit 418d40a into GoogleCloudPlatform:develop Oct 19, 2026
25 of 87 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

external PR from external contributor release-chore To not include into release notes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants