feat(experimental): flush the last chunk in append method#1699
Conversation
There was a problem hiding this comment.
Code Review
This pull request refactors the AsyncAppendableObjectWriter to flush the last chunk of data within the append method itself, rather than waiting for the close method. This change improves the writer's behavior by ensuring data is persisted more promptly. The implementation correctly handles flushing based on both the flush interval and whether a chunk is the last in an append call. The close and finalize methods have been updated to reflect this new behavior, and the stream is now correctly closed within finalize. The accompanying test changes, including a new system test, effectively validate the new logic. I have one suggestion to slightly refactor the flushing logic for improved clarity.
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 "append_from_file" (#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>

Earlier the last chunk was being flushed while calling the close() method. Now it will be done inside the append method itself.