feat(experimental): add write resumption strategy by Pulkit0110 · Pull Request #1663 · googleapis/python-storage · GitHub
Skip to content
This repository was archived by the owner on Mar 31, 2026. It is now read-only.

feat(experimental): add write resumption strategy#1663

Merged
Pulkit0110 merged 5 commits into
googleapis:mainfrom
Pulkit0110:bidi-writes-retry
Jan 2, 2026
Merged

feat(experimental): add write resumption strategy#1663
Pulkit0110 merged 5 commits into
googleapis:mainfrom
Pulkit0110:bidi-writes-retry

Conversation

@Pulkit0110

Copy link
Copy Markdown
Contributor

Adding writes resumption strategy which will be used for error handling of bidi writes operation.

@Pulkit0110 Pulkit0110 requested review from a team December 15, 2025 07:17
@Pulkit0110 Pulkit0110 requested a review from a team as a code owner December 15, 2025 07:17
@product-auto-label product-auto-label Bot added the size: xl Pull request size is extra large. label Dec 15, 2025
@product-auto-label product-auto-label Bot added the api: storage Issues related to the googleapis/python-storage API. label Dec 15, 2025
@gemini-code-assist

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

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.

Code Review

This pull request introduces a generic retry manager for bidi streams and applies it to read operations, which is a great improvement for resiliency. It also adds a resumption strategy for write operations. The overall structure is well-designed and the new tests are comprehensive. I've found one critical issue that will cause a TypeError at runtime due to a method being called with an unexpected argument. I've also included a couple of medium-severity comments to improve documentation clarity and maintainability in the new strategy classes.

@product-auto-label product-auto-label Bot added size: l Pull request size is large. and removed size: xl Pull request size is extra large. labels Dec 26, 2025
@Pulkit0110

Copy link
Copy Markdown
Contributor Author

/gemini review

@gemini-code-assist gemini-code-assist Bot left a comment

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.

Code Review

This pull request introduces a write resumption strategy for handling bidi write operations, which is a valuable addition for improving error handling in experimental async features. The implementation is well-structured and accompanied by a comprehensive set of unit tests that cover various scenarios, including initial uploads, resumption, and failure recovery. My feedback focuses on enhancing type safety, improving code clarity by addressing a potentially unused flag, and increasing the robustness of the tests by using mocks instead of None.

Comment thread google/cloud/storage/_experimental/asyncio/retry/writes_resumption_strategy.py Outdated
Comment thread google/cloud/storage/_experimental/asyncio/retry/writes_resumption_strategy.py Outdated
Comment thread tests/unit/asyncio/retry/test_writes_resumption_strategy.py Outdated
@chandra-siri

Copy link
Copy Markdown
Collaborator

/gemini summary

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Comment thread google/cloud/storage/_experimental/asyncio/retry/writes_resumption_strategy.py Outdated
Comment thread google/cloud/storage/_experimental/asyncio/retry/writes_resumption_strategy.py Outdated
Comment thread google/cloud/storage/_experimental/asyncio/retry/writes_resumption_strategy.py Outdated
Comment thread tests/unit/asyncio/retry/test_writes_resumption_strategy.py Outdated
Comment thread tests/unit/asyncio/retry/test_writes_resumption_strategy.py Outdated
Comment thread tests/unit/asyncio/retry/test_writes_resumption_strategy.py Outdated
Comment thread google/cloud/storage/_experimental/asyncio/retry/writes_resumption_strategy.py Outdated
Comment thread google/cloud/storage/_experimental/asyncio/retry/writes_resumption_strategy.py Outdated
Comment thread google/cloud/storage/_experimental/asyncio/retry/writes_resumption_strategy.py Outdated
Comment thread google/cloud/storage/_experimental/asyncio/retry/writes_resumption_strategy.py Outdated
Comment thread google/cloud/storage/_experimental/asyncio/retry/writes_resumption_strategy.py Outdated
Comment thread google/cloud/storage/_experimental/asyncio/retry/writes_resumption_strategy.py Outdated
Comment thread google/cloud/storage/_experimental/asyncio/retry/writes_resumption_strategy.py Outdated
@Pulkit0110 Pulkit0110 merged commit a57ea0e into googleapis:main Jan 2, 2026
17 checks passed
vchudnov-g added a commit that referenced this pull request Jan 13, 2026
PR created by the Librarian CLI to initialize a release. Merging this PR
will auto trigger a release.

Librarian Version: v0.7.0
Language Image:
us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/python-librarian-generator@sha256:8e2c32496077054105bd06c54a59d6a6694287bc053588e24debe6da6920ad91
<details><summary>google-cloud-storage: 3.8.0</summary>

##
[3.8.0](v3.7.0...v3.8.0)
(2026-01-13)

### Features

* expose persisted size in mrd (#1671)
([0e2961b](0e2961be))

* implement &#34;append_from_file&#34; (#1686)
([1333c95](1333c956))

* compute chunk wise checksum for bidi_writes (#1675)
([139390c](139390cb))

* flush the last chunk in append method (#1699)
([89bfe7a](89bfe7a5))

* add write resumption strategy (#1663)
([a57ea0e](a57ea0ec))

* add bidi stream retry manager. (#1632)
([d90f0ee](d90f0ee0))

* make flush size configurable (#1677)
([f7095fa](f7095faf))

### Bug Fixes

* no state lookup while opening bidi-write stream
([2d5a7b1](2d5a7b16))

* no state lookup while opening bidi-write stream (#1636)
([2d5a7b1](2d5a7b16))

* close write object stream always (#1661)
([4a609a4](4a609a4b))

* add system test for opening with read_handle (#1672)
([6dc711d](6dc711da))

</details>

---------

Co-authored-by: Victor Chudnovsky <vchudnov@google.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

api: storage Issues related to the googleapis/python-storage API. size: l Pull request size is large.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants