Skip to content

pipelines: don't send edition/channel for ingestion pipelines#5783

Draft
shreyas-goenka wants to merge 3 commits into
mainfrom
ingestion-pipeline-edition-channel-defaults
Draft

pipelines: don't send edition/channel for ingestion pipelines#5783
shreyas-goenka wants to merge 3 commits into
mainfrom
ingestion-pipeline-edition-channel-defaults

Conversation

@shreyas-goenka

@shreyas-goenka shreyas-goenka commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Problem

LakeFlow Connect ingestion pipelines fail with:

You cannot provide cluster settings when using serverless compute

Two root causes:

  1. The provider's CustomizeSchema unconditionally sets edition = ADVANCED and channel = CURRENT for all pipeline types. The API rejects these as cluster settings for ingestion pipelines, which default to serverless compute.
  2. serverless = false was silently dropped — the SDK's Serverless bool field has omitempty, so a false value is never sent unless "Serverless" is in ForceSendFields.

Fix

In Create and Update:

  • Clear edition and channel when the pipeline has an ingestion_definition.
  • Call SetForceSendFields for "serverless" so that an explicitly-set serverless = false is serialized and sent to the API.

Ingestion pipelines (those with ingestion_definition) use serverless
compute by default. The API rejects edition and channel as incompatible
cluster settings in that mode.

The schema defaults remain in place so the plan still shows the correct
defaults for regular DLT pipelines. The Create and Update functions now
clear these fields before the API call when ingestion_definition is set.

Co-authored-by: Shreyas Goenka <shreyas.goenka@databricks.com>
@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Please ensure that the NEXT_CHANGELOG.md file is updated with any relevant changes.
If this is not necessary for your PR, please include the following in your PR description:
NO_CHANGELOG=true
and rerun the job.

The SDK's Serverless field is a bool with omitempty, so a false value is
dropped unless "Serverless" is in ForceSendFields. Call SetForceSendFields
in Create and Update so that an explicitly-set serverless = false is
serialized and sent to the platform.

Co-authored-by: Shreyas Goenka <shreyas.goenka@databricks.com>
GetOkExists reads from both state and config (level "set"), so it returns
true whenever serverless=false exists in state — even for users who never
set serverless in their config. This means SetForceSendFields would fire
for existing classic compute pipelines on every apply, a broader behavior
change than intended. Reverting until the correct approach is determined.

Co-authored-by: Shreyas Goenka <shreyas.goenka@databricks.com>
@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

If integration tests don't run automatically, an authorized user can run them manually by following the instructions below:

Trigger:
go/deco-tests-run/terraform

Inputs:

  • PR number: 5783
  • Commit SHA: c91473bef7ad0084c8b89b55b86a284eb6e183da

Checks will be approved automatically on success.

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.

1 participant