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

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.

@github-actions github-actions Bot added python io size/s S: 10-49 lines changed labels Oct 27, 2026
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