Skip to content

[Python] Handle translated Azure missing-blob errors in exists - #40845

Draft
crisfiorini-oss wants to merge 1 commit into
apache:masterfrom
crisfiorini-oss:fix/azure-blob-exists-404
Draft

crisfiorini-oss wants to merge 1 commit into
apache:masterfrom
crisfiorini-oss:fix/azure-blob-exists-404

Conversation

@crisfiorini-oss

@crisfiorini-oss crisfiorini-oss commented Oct 27, 2026 •

Copy link
Copy Markdown

BlobStorageIO.exists currently catches ResourceNotFoundError, but _blob_properties translates that exception into BlobStorageError. A missing blob therefore raises instead of returning False, causing FileBasedSink.pre_finalize / WriteToText to fail for a fresh Azure Blob destination.

Catch the translated BlobStorageError and check its code. Preserve failures for every non-404 response. Reuse the existing Azure filesystem and exception translation; no client, retry or pipeline changes.

Validation: the new missing-blob regression fails against the unmodified Beam 2.72 SDK with BlobStorageError(None, 404). All eight tests in blobstorageio_test.py (four existing path cases and four existence cases) pass with the fix using Beam 2.72 and the Azure SDK. Coverage includes existing blobs, the real ResourceNotFoundError-to-BlobStorageError translation, authorization failures and non-404 translated failures. Full suites run in CI.

The failure was reproduced on Flink 1.20 using the Beam 2.72 portable Python SDK with Azure workload identity; no credentials are needed for the regression tests.

Current CI gate (2026-10-28)

Rebased onto current master and pushed head 4b0b9787af75e8fa76b85c63de186da413a5b4e0; the two-file fix and existing fixture reuse are unchanged. The Python workflows, including PreCommit Python, await Apache maintainer approval for this contributor. Successful label/metadata checks do not establish Python test success. The upstream workflow also uses Apache's self-hosted runners, so an unmodified fork run cannot provide those runners. Keep this PR draft until the upstream test workflows actually run and pass.

Downstream independence (2026-10-28)

The downstream runtime maintains this correction and its regression tests in obin-ai/module-beam-runner #7, with image builds and tests in downstream CI. This upstream contribution remains optional; Apache workflow approval, merging and release timing do not block downstream delivery. This does not claim that the pending Apache test workflows passed.

@github-actions github-actions Bot added python io size/s S: 10-49 lines changed labels Oct 27, 2026
@crisfiorini-oss
crisfiorini-oss force-pushed the fix/azure-blob-exists-404 branch from 0045e72 to 4b0b978 Compare October 28, 2026 16:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

io python size/s S: 10-49 lines changed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant