Skip to content

Regenerate stale provider dependencies instead of silently using them - #70955

Merged
eladkal merged 1 commit into
apache:mainfrom
potiuk:fix-stale-provider-dependencies-staleness-check
Aug 3, 2026
Merged

Regenerate stale provider dependencies instead of silently using them#70955
eladkal merged 1 commit into
apache:mainfrom
potiuk:fix-stale-provider-dependencies-staleness-check

Conversation

@potiuk

@potiuk potiuk commented Aug 3, 2026

Copy link
Copy Markdown
Member

Release commands enumerate providers from generated/provider_dependencies.json, filtering on each provider's state. generate_provider_dependencies_if_needed() runs on every breeze invocation, but its "json or sidecar missing" branch delegated to get_provider_dependencies(), which only regenerates when the json is absent. With the json present and the .sha256sum sidecar missing, the stale file was returned unchanged and no sidecar was ever written — so the staleness check stayed permanently disabled for that checkout.

A provider whose state changed is then invisible to the release. common.ai was flipped to ready in 682cf06, but a checkout carrying a json from before that still reported not-ready, so breeze release-management prepare-provider-distributions silently omitted apache-airflow-providers-common-ai 0.7.0 from the 2026-08-01 wave. It was caught only by an unrelated package-count mismatch during the RC cut.

Both branches now force regeneration through a shared helper that removes the json first. The hash sidecar is also written only after regeneration succeeds, so a failed run no longer leaves a sidecar vouching for content that was never produced.

Tests cover both broken paths (missing sidecar, and no sidecar written when regeneration raises); the up-to-date and stale-sidecar cases are guards that the shared-helper refactor did not change behaviour that already worked.


Was generative AI tooling used to co-author this PR?
  • Yes — Claude Code (Opus 5)

Generated-by: Claude Code (Opus 5) following the guidelines

Release commands enumerate providers from generated/provider_dependencies.json,
filtering on each provider's state. The freshness check runs on every breeze
invocation, but when the json was present and its sha256sum sidecar was not, it
delegated to a helper that only regenerates when the json is missing. The stale
file was therefore returned as-is and no sidecar was ever written, leaving the
check permanently disabled for that checkout.

A provider whose state changed then stays invisible to the release: common.ai
was flipped to ready in 682cf06 but a checkout carrying an older json still
called it not-ready, so it was dropped from the 2026-08-01 wave with no warning
and was only caught by an unrelated package count mismatch.
@eladkal eladkal removed the backport-to-v3-3-test Backport to v3-3-test label Aug 3, 2026
@eladkal
eladkal merged commit ece27bb into apache:main Aug 3, 2026
155 checks passed
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.

3 participants