Skip to content

fix(source-zoho-crm, source-google-ads): fix two Docker read reds of the standard tests - #88944

Draft
Anatolii Yatsuk (tolik0) wants to merge 4 commits into
masterfrom
tolik0/ci/python-standard-tests-fixes-code
Draft

Anatolii Yatsuk (tolik0) wants to merge 4 commits into
masterfrom
tolik0/ci/python-standard-tests-fixes-code

Conversation

@tolik0

@tolik0 Anatolii Yatsuk (tolik0) commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Two connectors, patch bumps only: source-zoho-crm 0.3.4 → 0.3.5 (its schemas stop rejecting picklist values that Zoho keeps on old records) and source-google-ads 6.1.4 → 6.1.5 (its suggested streams in the Cloud UI and in the standard tests' Docker read grow from 3 matching names to 16). Both came out of the Docker read dry run of airbytehq/airbyte-internal-issues#17137, whose CDK release turns that read on by default.

What

  • source-zoho-crm: stop declaring a picklist field's values as an enum in the generated stream schemas, for both picklist and multiselectpicklist fields. The field stays a nullable string (or an array of them).

  • source-google-ads: correct suggestedStreams in metadata.yaml. 13 of the 16 names were the stream names from before 2.0.0, which no discovered stream has any more. Each one is mapped to the stream it was renamed to:

    Before After
    campaigns campaign
    accounts customer
    ad_group_ads ad_group_ad
    ad_group_ad_report ad_group_ad_legacy
    ad_groups ad_group
    keyword_report keyword_view
    campaign_labels campaign_label
    ad_group_labels ad_group_label
    ad_group_ad_labels ad_group_ad_label
    user_location_report user_location_view
    display_keyword_performance_report display_keyword_view
    shopping_performance_report shopping_performance_view
    display_topics_performance_report topic_view

    click_view, account_performance_report and geographic_view_with_metrics were already current.

Why

  • source-zoho-crm: Zoho keeps a value on existing records after it is removed from the picklist. Those records fail the schema: the test account has one lead (Industry) and one contact (Lead_Source) with such a value, and the default Docker read of airbytehq/airbyte-internal-issues#17137 reports them as schema violations. validate_schema: false is not available, since the connector is at test_strictness_level: high. Dropping enum only widens the schema; the JSON type is unchanged, so no destination column changes.
  • source-google-ads: the Cloud UI pre-selects the suggested streams for new connections, and only 3 of the 16 names matched a stream. The default Docker read of airbytehq/airbyte-internal-issues#17137 also narrows to the suggested streams, so it read 3 streams instead of 16.

Verification

  • source-zoho-crm:
    • poetry run pytest unit_tests: 107 passed (the two picklist cases now expect no enum).
    • A local discover and read of incremental_leads_zoho_crm_stream (21 records) and incremental_contacts_zoho_crm_stream (13 records) with the GSM test secret, validated with jsonschema against the discovered schemas: on master, 1 lead fails Industry enum and 1 contact fails Lead_Source enum; on this branch, 0 records fail, and no field keeps an enum.
  • source-google-ads: discover with the published latest image and the GSM test secret lists all 16 new names.
  • Full connector QA passes for both connectors, including CheckVersionIncrement and the documentation checks on the changelog rows. CheckVersionIncrement requires the source-google-ads bump for a metadata-only change (it fails without it).
  • ruff check and ruff format --check (0.8.3) pass on the changed Python files.

Known gap

The default Docker read of source-google-ads stays red after this PR, and now lists more streams. With both test configs (windows 2022-06-01..05 and 2025-05-10..11), the published image returns rows only for customer; every other suggested stream completes with no rows, although expected_records.jsonl and expected_records_click.jsonl hold rows for most of them from earlier runs. The test account's data has to be checked or the windows moved in the GSM test secret. That is not a code change, and it is listed as a follow-up in airbytehq/airbyte-internal-issues#17133.

Merge order

Independent of the other PRs, the CI PR #88945 included: source-zoho-crm pins CDK 1.8.0, so the new in-process step only warns for it, and the in-process suite of source-google-ads does not read suggestedStreams. Merge it before the CDK release of airbytehq/airbyte-internal-issues#17137 that turns the Docker read on by default, so that source-zoho-crm does not go red there.

Part of airbytehq/airbyte-internal-issues#17133, together with the CI step in #88945, the other connector fix PRs (#88940, #88941, #88942, #88943) and the CDK change in airbytehq/airbyte-python-cdk#1232, which this PR does not depend on.

🤖 Generated with Claude Code

Important

Active progressive rollout warning for source-google-ads.

  • (Click to Approve:) Bypass the active progressive rollout warning for source-google-ads in the PR comment here.

The stream schemas listed a picklist field's current values as an `enum`. Zoho keeps a value on
existing records after it is removed from the picklist, so those records fail schema validation:
the test account has one lead (`Industry`) and one contact (`Lead_Source`) with such a value, and
the Docker read test of the standard tests turns red on them. The field stays a nullable string.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
13 of the 16 suggested streams used names from before 2.0.0 (campaigns, accounts, ad_group_ads,
...), which no discovered stream has, so the suggested set shrank to 3 streams in the Cloud UI and
in the standard tests' Docker read. Map each to the stream it was renamed to.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

👋 Greetings, Airbyte Team Member!

Here are some helpful tips and reminders for your convenience.

💡 Show Tips and Tricks

PR Slash Commands

Airbyte Maintainers (that's you!) can execute the following slash commands on your PR:

  • 🛠️ Quick Fixes
    • /format-fix - Fixes most formatting issues.
    • /bump-version - Bumps connector versions, scraping changelog description from the PR title.
      • Bump types: patch (default), minor, major, major_rc, rc, promote.
      • The rc type is a smart default: applies minor_rc if stable, or bumps the RC number if already RC.
      • The promote type strips the RC suffix to finalize a release.
      • Example: /bump-version type=rc or /bump-version type=minor
    • /bump-progressive-rollout-version - Alias for /bump-version type=rc. Bumps with an RC suffix and enables progressive rollout.
  • ❇️ AI Testing and Review (internal link: AI-SDLC Docs):
    • /ai-prove-fix - Runs prerelease readiness checks, including testing against customer connections.
    • /ai-canary-prerelease - Rolls out prerelease to 5-10 connections for canary testing.
    • /ai-review - AI-powered PR review for connector safety and quality gates.
    • /ai-breaking-change-review - Step 1 for a connector breaking change. Reviews whether the change needs to be breaking, destination data-loss risk, and whether the migration guide, metadata message, and docs let users upgrade safely. Opens one conversation on the PR for each item the author needs to handle.
    • /ai-breaking-change-ready - Step 2, after you've replied to and resolved each of those conversations. Checks that every one has a reply and is resolved, then pings the breaking-change reviewers in Slack for human review.
  • 📝 AI Documentation:
    • /ai-docs-review - AI-powered documentation review for PRs with connector changes.
    • /ai-create-docs-pr - Creates a documentation PR for connector changes, stacked on the current PR.
  • 🚀 Connector Releases:
    • /publish-connectors-prerelease - Publishes pre-release connector builds (tagged as {version}-preview.{git-sha}) for all modified connectors in the PR.
    • /enable-autopilot-rollouts - Enables autopilot progressive rollouts for the modified connector(s) in the PR, remediating "autopilot rollouts not enabled for {connector-name}" auto-merge blockers. Sets defaultRolloutMode: autopilot and enableProgressiveRollout: true, preserving any existing autopilotConfig.
      • Optional args: connector=<CONNECTOR_NAME> (defaults to the modified connectors in the PR), strategy=fast|slow|default (defaults to fast).
      • Example: /enable-autopilot-rollouts or /enable-autopilot-rollouts connector=source-faker strategy=slow
  • ☕️ JVM connectors:
    • /update-connector-cdk-version connector=<CONNECTOR_NAME> - Updates the specified connector to the latest CDK version.
      Example: /update-connector-cdk-version connector=destination-bigquery
  • 🐍 Python connectors:
    • /poe connector source-example lock - Run the Poe lock task on the source-example connector, committing the results back to the branch.
    • /poe source example lock - Alias for /poe connector source-example lock.
    • /poe source example use-cdk-branch my/branch - Pin the source-example CDK reference to the branch name specified.
    • /poe source example use-cdk-latest - Update the source-example CDK dependency to the latest available version.
  • ⚙️ Admin commands:
    • /force-merge reason="<REASON>" - Force merges the PR using admin privileges, bypassing CI checks. Requires a reason.
      Example: /force-merge reason="CI is flaky, tests pass locally"
📚 Show Repo Guidance

Helpful Resources

📝 Edit this welcome message.

@github-actions

Copy link
Copy Markdown
Contributor

Note

Autopilot progressive rollouts are not enabled for the following modified connector(s):

  • source-zoho-crm

This is a courtesy heads-up only — it does not block merge or fail any check.
To enable automatic progressive rollouts for the connector(s) above, comment
/enable-autopilot-rollouts on this PR. This sets defaultRolloutMode: autopilot
and enableProgressiveRollout: true in each connector's metadata.yaml,
preserving any existing autopilotConfig.

…e changelog rows

The changelog row was written with a placeholder before the pull request
existed; it now links the pull request.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

source-zoho-crm Connector Test Results

119 tests   114 ✅  15s ⏱️
  3 suites    5 💤
  3 files      0 ❌

Results for commit 3d23aab.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

source-google-ads Connector Test Results

374 tests   361 ✅  59m 2s ⏱️
  2 suites   13 💤
  2 files      0 ❌

Results for commit 3d23aab.

♻️ This comment has been updated with latest results.

master released source-google-ads 6.1.5 and 6.1.6 and source-zoho-crm 0.3.5 since this branch
was cut. Re-bump to 6.1.7 and 0.3.6 and keep master's changelog rows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Detected source-google-ads Active Rollout: true

Important

Active progressive rollout warning for source-google-ads.

To bypass this warning, click on the matching checkbox in the PR description. Look for the checkbox text:

(Click to Approve:) Bypass the active progressive rollout warning for source-google-ads in the PR comment

  • Rollout version: 6.1.6
  • Rollout state: in_progress
  • Rollout last updated by: Airbyte Support Bot <airbyte-support-bot@airbyte.io>
  • Open Connector Rollout Manager in Retool to clean up or close out this rollout if appropriate.

Version on master Branch: 6.1.6

  • RC marker on master branch: false

PR Description Checkbox Status

  • Bypass checkbox checked: false

ℹ️ More Information

Show/hide details...

🤔 What happens if this PR is merged

Checking the checkbox will allow the PR to merge, but it does not necessarily stop the active rollout by itself. The result of the PR merging depends on what connector version is published.

Expected outcomes by type of version number change:

If connector version is not modified in this PR...

No new connector version should be released, and the active rollout should continue unchanged.

If the connector version increments to a higher version...

After this PR is merged, the new version will be published and advertised as this connector's rollout candidate, replacing the current one. An -rc suffix is not required for this: with enableProgressiveRollout, an ordinary version bump becomes the rollout candidate. When it is registered, the platform cancels — not finalizes — any existing non-terminal rollout for this connector, without unpinning actors. Actors pinned to 6.1.6 therefore keep syncing on that old image: they are not rolled back to the previous default version, and the merge itself does not move them to the new candidate.

The new rollout still has to be started before those actors move. With defaultRolloutMode: autopilot, the autopilot cron starts it on its next eligible pass; otherwise a human starts it from Connector Rollout Manager. Starting it migrates the previous rollout's pins onto the new candidate version by default (migratePins), which is what moves those actors forward. Until then, they stay on the old version.

If the connector version changes from RC to non-RC (GA) version...

You should not merge the PR unless/until the RC has been finalized as canceled. See above Rollout state for detected status.

[!Warning]
This PR should not be merged if the RC rollout is still active. First finalize the active rollout as successful or cancel it in Connector Rollout Manager.

When you finalize an RC rollout as successful, the platform triggers a promotion workflow that strips the -rc suffix, removes stable-version registryOverrides, disables progressive rollout, force-merges that promotion, and unpins actors.

🔁 How to rerun this check

To rerun the check, simply check and uncheck the box, or else modify the PR description and/or title in any way.

Alternatively, you can find the Active Progressive Rollout CI workflow and manually rerun it (although this is generally slower than the above methods).


This comment will be updated as PR and/or rollout status changes.

Workflow run

Comment on lines 393 to 394
| Version | Date | Pull Request | Subject |
|:------------|:-----------|:---------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|

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.

[markdownlint-fix] reported by reviewdog 🐶

Suggested change
| Version | Date | Pull Request | Subject |
|:------------|:-----------|:---------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Version | Date | Pull Request | Subject |
| :------------ | :----------- | :--------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants