-
-
Notifications
You must be signed in to change notification settings - Fork 381
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Handle exceptions during writes to Azure #783
Conversation
raise ValueError | ||
except ValueError: | ||
# FakeBlobClient.commit_block_list was not called | ||
self.assertGreater(len(blob_client._staged_contents), 0) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should add a similar test including compression, after #786 merges
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
…open into patch-2 * 'develop' of https://github.com/RaRe-Technologies/smart_open: Propagate __exit__ call to underlying filestream (piskvorky#786) Retry finalizing multipart s3 upload (piskvorky#785) Fix `KeyError: 'ContentRange'` when received full content from S3 (piskvorky#789) Add support for SSH connection via aliases from `~/.ssh/config` (piskvorky#790) Make calls to smart_open.open() for GCS 1000x faster by avoiding unnecessary GCS API call (piskvorky#788) Add zstandard compression feature (piskvorky#801) Support moto 4 & 5 (piskvorky#802) Secure the connection using SSL when connecting to the FTPS server (piskvorky#793) upgrade dev status classifier to stable (piskvorky#798) Fix formatting of python code (piskvorky#795)
raise ValueError | ||
except ValueError: | ||
# FakeBlobClient.commit_block_list was not called | ||
self.assertGreater(len(blob_client._staged_contents), 0) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this one still fails, because this test case covers the TextIOWrapper case which calls close
on the azure binary io before our FileLikeProxy
had the chance to call __exit__
on the azure binary io (which circumvents close
when __exit__
is called during exception handling ref #786)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@mpenkov one more PR green :) added some documentation and extra tests |
…open into patch-2 * 'develop' of https://github.com/RaRe-Technologies/smart_open: fix test, for real this time update integration test Add advanced usage sections to README.rst (piskvorky#741) Add logic for handling large files in MultipartWriter uploads to s3 (piskvorky#796) Fix __str__ method in SinglepartWriter (piskvorky#791)
I've also opened an analogous gcs issue googleapis/python-storage#1228 |
Thank you for your work! |
Thanks for the reviews! 🙏 |
Title
Avoid lingering incomplete uploads on Azure storage blob in case of upload interrupt/failure.
Analogous to the
s3.Writer.__exit__
implementation.Motivation
Housekeeping, expected behaviour, cost savings.
If you're adding a new feature, then consider opening a ticket and discussing it with the maintainers before you actually do the hard work.
Tests
If you're fixing a bug, consider test-driven development:
If you're implementing a new feature, include unit tests for it.
Make sure all existing unit tests pass.
You can run them locally using:
If there are any failures, please fix them before creating the PR (or mark it as WIP, see below).
Work in progress
If you're still working on your PR, include "WIP" in the title.
We'll skip reviewing it for the time being.
Once you're ready to review, remove the "WIP" from the title, and ping one of the maintainers (e.g. mpenkov).
Checklist
Before you create the PR, please make sure you have:
Workflow
Please avoid rebasing and force-pushing to the branch of the PR once a review is in progress.
Rebasing can make your commits look a bit cleaner, but it also makes life more difficult from the reviewer, because they are no longer able to distinguish between code that has already been reviewed, and unreviewed code.