Feat(Storage): Enable full object checksum validation on JSON path#9
Feat(Storage): Enable full object checksum validation on JSON path#9thiyaguk09 wants to merge 55 commits intomainfrom
Conversation
Summary of ChangesHello @thiyaguk09, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request enhances the storage client's object upload functionality by implementing comprehensive checksum validation. It ensures that both MD5 and CRC32c hashes are calculated for uploaded data and transmitted via the Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request enables full object checksum validation by sending both CRC32c and MD5 hashes in the x-goog-hash header for uploads. The implementation correctly calculates and adds these hashes. My review highlights a significant performance issue where the data stream is read twice, which could be problematic for large files. I've also included suggestions for minor code cleanup in both the main logic and the tests. The added tests are comprehensive and effectively validate the new functionality.
|
/gemini review |
There was a problem hiding this comment.
Code Review
This pull request introduces checksum validation for uploads by adding the X-Goog-Hash header, which is a valuable feature. The changes are implemented across multipart, resumable, and streamable uploaders, with comprehensive tests covering the new functionality. I've identified a couple of areas for improvement: a logic issue with merging custom headers in the multipart uploader, and an inconsistency in the casing of the X-Goog-Hash header. Addressing these points will enhance the robustness and maintainability of the code.
e5c33da to
4091fcc
Compare
d61822d to
4091fcc
Compare
Refactor Resumable, Streamable, and Multipart uploaders to ensure integrity headers (X-Goog-Hash) are only attached to the request when an upload is being finalized. - In StreamableUploader, introduced `$isFinalRequest` to track intent before writeSize recalculations. - In ResumableUploader, added a boundary check to only attach the hash when the current range matches the total file size. - Aligns with GCS best practices for resumable upload integrity.
4091fcc to
2ac9aad
Compare
|
/gemini summary |
Summary of ChangesThis pull request introduces significant enhancements across two Google Cloud client libraries: Storage and BigQuery. For Google Cloud Storage, it implements comprehensive checksum validation for object uploads, ensuring that MD5 and CRC32c hashes are calculated and transmitted via the 'X-Goog-Hash' header, with careful handling for resumable and streamable uploads to send the header only on the final data chunk. Concurrently, for Google Cloud BigQuery, it integrates the stateless query API, allowing certain queries to bypass traditional job creation for improved efficiency. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Changelog
Activity
|
…ked deprecated for WorkerPools API (googleapis#9031) * docs: An existing repeated string field custom_audiences is marked deprecated for WorkerPools API PiperOrigin-RevId: 886276550 Source-Link: googleapis/googleapis@c063f49 Source-Link: https://github.com/googleapis/googleapis-gen/commit/1adb05fe8457b4879dde688c26b0fe0aca565479 Copy-Tag: eyJwIjoiUnVuLy5Pd2xCb3QueWFtbCIsImgiOiIxYWRiMDVmZTg0NTdiNDg3OWRkZTY4OGMyNmIwZmUwYWNhNTY1NDc5In0= * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
…bench docker tag to v0.62.0 (googleapis#9035)
…dded to enum `SubResourceType` (googleapis#9036) * feat: A new value `SUB_RESOURCE_TYPE_READ_POOL` is added to enum `SubResourceType` feat: A new value `SUB_RESOURCE_TYPE_RESERVATION` is added to enum `SubResourceType` feat: A new value `SUB_RESOURCE_TYPE_DATASET` is added to enum `SubResourceType` feat: A new value `SIGNAL_TYPE_VERSION_NEARING_END_OF_LIFE` is added to enum `SignalType docs: Modified comment for Edition Enum PiperOrigin-RevId: 887887716 Source-Link: googleapis/googleapis@28d90ca Source-Link: https://github.com/googleapis/googleapis-gen/commit/c0c1b557c7b07193a69fed7ba488cba93e319112 Copy-Tag: eyJwIjoiRGF0YWJhc2VDZW50ZXIvLk93bEJvdC55YW1sIiwiaCI6ImMwYzFiNTU3YzdiMDcxOTNhNjlmZWQ3YmE0ODhjYmE5M2UzMTkxMTIifQ== * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
…gleapis#9037) * feat: Adding new workload specific fields for AlloyDB PiperOrigin-RevId: 888045819 Source-Link: googleapis/googleapis@f083611 Source-Link: https://github.com/googleapis/googleapis-gen/commit/5ee55b6e37681b6da7779ea7d8eef82974631ee9 Copy-Tag: eyJwIjoiQmFja3VwRHIvLk93bEJvdC55YW1sIiwiaCI6IjVlZTU1YjZlMzc2ODFiNmRhNzc3OWVhN2Q4ZWVmODI5NzQ2MzFlZTkifQ== * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
…#9038) * feat: updated v2 dialogflow client libraries PiperOrigin-RevId: 888116636 Source-Link: googleapis/googleapis@6649b7f Source-Link: https://github.com/googleapis/googleapis-gen/commit/42267da093de4105008a36bf83f7c567146b42a2 Copy-Tag: eyJwIjoiRGlhbG9nZmxvdy8uT3dsQm90LnlhbWwiLCJoIjoiNDIyNjdkYTA5M2RlNDEwNTAwOGEzNmJmODNmN2M1NjcxNDZiNDJhMiJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
…leapis#9057) * feat: Add Pausing/Yaml capabilities to public protos PiperOrigin-RevId: 891736643 Source-Link: googleapis/googleapis@3aab7be Source-Link: https://github.com/googleapis/googleapis-gen/commit/3b982464a1fde64933e0073692b551df958cda68 Copy-Tag: eyJwIjoiRGF0YWZsb3cvLk93bEJvdC55YW1sIiwiaCI6IjNiOTgyNDY0YTFmZGU2NDkzM2UwMDczNjkyYjU1MWRmOTU4Y2RhNjgifQ== * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
…hostnames for private instances (googleapis#9053) * feat: Add CustomHostConfig to configure custom hostnames for private instances feat: Add option to require code owner approval in branch rules feat: Add force option to DeleteInstance request docs: Improve documentation for labels, pagination, and ListLocations PiperOrigin-RevId: 889991858 Source-Link: googleapis/googleapis@10ac207 Source-Link: https://github.com/googleapis/googleapis-gen/commit/26a9c81372b50cc5009f125175c3c4e43bba8f97 Copy-Tag: eyJwIjoiU2VjdXJlU291cmNlTWFuYWdlci8uT3dsQm90LnlhbWwiLCJoIjoiMjZhOWM4MTM3MmI1MGNjNTAwOWYxMjUxNzVjM2M0ZTQzYmJhOGY5NyJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
…m for when the merchant_id field is not valid (googleapis#9051) * feat: add INVALID_MERCHANT_ID to the ErrorReason enum for when the merchant_id field is not valid feat: add EU_POLITICAL_ADVERTISING_DECLARATION_REQUIRED to the ErrorReason enum for campaigns missing the EU political advertising declaration PiperOrigin-RevId: 889816734 Source-Link: googleapis/googleapis@d3ad5e3 Source-Link: https://github.com/googleapis/googleapis-gen/commit/2108ed190b9b4cdb9277acf3b8154b65ba3d9ef7 Copy-Tag: eyJwIjoiQWRzRGF0YU1hbmFnZXIvLk93bEJvdC55YW1sIiwiaCI6IjIxMDhlZDE5MGI5YjRjZGI5Mjc3YWNmM2I4MTU0YjY1YmEzZDllZjcifQ== * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
…sInspectionPolicy, GatewaySecurityPolicy, GatewaySecurityPolicyRule, and UrlList (googleapis#9049) * feat: Publish proto definitions for AuthzPolicy, TlsInspectionPolicy, GatewaySecurityPolicy, GatewaySecurityPolicyRule, and UrlList feat: Publish proto definitions for Intercept, Mirroring and SecurityProfileGroup feat: Publish proto definitions for SSG docs: Update and cleanup docs PiperOrigin-RevId: 889789965 Source-Link: googleapis/googleapis@a4d528d Source-Link: https://github.com/googleapis/googleapis-gen/commit/0b793c6cf0f81fa0ab5ae398e6b1ba660788e0ec Copy-Tag: eyJwIjoiTmV0d29ya1NlY3VyaXR5Ly5Pd2xCb3QueWFtbCIsImgiOiIwYjc5M2M2Y2YwZjgxZmEwYWI1YWUzOThlNmIxYmE2NjA3ODhlMGVjIn0= * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
…f_pattern` and `trace_blocks` (googleapis#9044) * feat: updated v3 dialogflow client libraries with `dtmf_pattern` and `trace_blocks` PiperOrigin-RevId: 888886398 Source-Link: googleapis/googleapis@59d5f2b Source-Link: https://github.com/googleapis/googleapis-gen/commit/614ee1091e3971c8afc6381cd159cff041558a15 Copy-Tag: eyJwIjoiRGlhbG9nZmxvd0N4Ly5Pd2xCb3QueWFtbCIsImgiOiI2MTRlZTEwOTFlMzk3MWM4YWZjNjM4MWNkMTU5Y2ZmMDQxNTU4YTE1In0= * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
…oogleapis#9043) * feat: add folders and teamFolders related changes to v1 docs: A comment for field `force` in message `.google.cloud.dataform.v1.DeleteRepositoryRequest` is changed PiperOrigin-RevId: 888723444 Source-Link: googleapis/googleapis@29214fa Source-Link: https://github.com/googleapis/googleapis-gen/commit/5125e3feaf76ea66810c0c5f59607f21b0aaba76 Copy-Tag: eyJwIjoiRGF0YWZvcm0vLk93bEJvdC55YW1sIiwiaCI6IjUxMjVlM2ZlYWY3NmVhNjY4MTBjMGM1ZjU5NjA3ZjIxYjBhYWJhNzYifQ== * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
feat: publish new error reasons docs: fix documentation formatting docs: update various comments docs: update license year docs: update API common type documentation PiperOrigin-RevId: 889289393 Source-Link: googleapis/googleapis@94bc991 Source-Link: https://github.com/googleapis/googleapis-gen/commit/db7143a338a7c75839b4698cb3ea6f1013b4c3c7 Copy-Tag: eyJwIjoiQ29tbW9uUHJvdG9zLy5Pd2xCb3QueWFtbCIsImgiOiJkYjcxNDNhMzM4YTdjNzU4MzliNDY5OGNiM2VhNmYxMDEzYjRjM2M3In0= * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * docs: update API common type documentation PiperOrigin-RevId: 890591600 Source-Link: googleapis/googleapis@208f198 Source-Link: https://github.com/googleapis/googleapis-gen/commit/b10e9b25e87eabe00466b7d51b5ee4748c8c66c8 Copy-Tag: eyJwIjoiQ29tbW9uUHJvdG9zLy5Pd2xCb3QueWFtbCIsImgiOiJiMTBlOWIyNWU4N2VhYmUwMDQ2NmI3ZDUxYjVlZTQ3NDhjOGM2NmM4In0= * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
* feat: Add ONTAP passthrough APIs Adds the following new methods for direct ONTAP API interaction: - ExecuteOntapPost - ExecuteOntapGet - ExecuteOntapDelete - ExecuteOntapPatch `StoragePoolType` docs: A comment for field `source_volume` in message `.google.cloud.netapp.v1.Backup` is changed docs: A comment for field `type` in message `.google.cloud.netapp.v1.StoragePool` is changed docs: A comment for field `source_backup` in message `.google.cloud.netapp.v1.RestoreParameters` is changed fix!: An existing value `UNIFIED_LARGE_CAPACITY` is removed from enum `StoragePoolType` PiperOrigin-RevId: 889585893 Source-Link: googleapis/googleapis@a90dc55 Source-Link: https://github.com/googleapis/googleapis-gen/commit/13a2f770830b5eaa30cf6b221de9e2bdec80c4db Copy-Tag: eyJwIjoiTmV0QXBwLy5Pd2xCb3QueWFtbCIsImgiOiIxM2EyZjc3MDgzMGI1ZWFhMzBjZjZiMjIxZGU5ZTJiZGVjODBjNGRiIn0= * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
…os (googleapis#9058) * feat: Add container_spec to Reasoning Engine public protos PiperOrigin-RevId: 891815202 Source-Link: googleapis/googleapis@32f3753 Source-Link: https://github.com/googleapis/googleapis-gen/commit/6c6cec700e237ac5ca71004d637602d9ee107930 Copy-Tag: eyJwIjoiQWlQbGF0Zm9ybS8uT3dsQm90LnlhbWwiLCJoIjoiNmM2Y2VjNzAwZTIzN2FjNWNhNzEwMDRkNjM3NjAyZDllZTEwNzkzMCJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
* feat: add sha256 field to Package proto PiperOrigin-RevId: 891887357 Source-Link: googleapis/googleapis@54ba514 Source-Link: https://github.com/googleapis/googleapis-gen/commit/54b07e8a20f58156b042f6b06df3bad728924d30 Copy-Tag: eyJwIjoiRGF0YWZsb3cvLk93bEJvdC55YW1sIiwiaCI6IjU0YjA3ZThhMjBmNTgxNTZiMDQyZjZiMDZkZjNiYWQ3Mjg5MjRkMzAifQ== * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
…Flexible CA feature (googleapis#9060) * feat: [Memorystore for Redis Cluster] Add support for Flexible CA feature PiperOrigin-RevId: 891891848 Source-Link: googleapis/googleapis@0eb2a36 Source-Link: https://github.com/googleapis/googleapis-gen/commit/e41edbefa8a28491df182ec22394de70381e6019 Copy-Tag: eyJwIjoiUmVkaXNDbHVzdGVyLy5Pd2xCb3QueWFtbCIsImgiOiJlNDFlZGJlZmE4YTI4NDkxZGYxODJlYzIyMzk0ZGU3MDM4MWU2MDE5In0= * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
… CA feature (googleapis#9061) * feat: [Memorystore for Valkey] Add support for Flexible CA feature PiperOrigin-RevId: 892004368 Source-Link: googleapis/googleapis@456866b Source-Link: https://github.com/googleapis/googleapis-gen/commit/3b3ecd8f4c8b5a5621af82dca02805f27b69fa06 Copy-Tag: eyJwIjoiTWVtb3J5c3RvcmUvLk93bEJvdC55YW1sIiwiaCI6IjNiM2VjZDhmNGM4YjVhNTYyMWFmODJkY2EwMjgwNWYyN2I2OWZhMDYifQ== * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
…o NEW_SURFACE_ONLY (googleapis#9030) * chore(php): move all remaining migration_mode=MIGRATING to NEW_SURFACE_ONLY PiperOrigin-RevId: 886270461 Source-Link: googleapis/googleapis@359422c Source-Link: https://github.com/googleapis/googleapis-gen/commit/898376929e854a8efc30f4b94cf3720ba0b68f58 Copy-Tag: eyJwIjoiRXJyb3JSZXBvcnRpbmcvLk93bEJvdC55YW1sIiwiaCI6Ijg5ODM3NjkyOWU4NTRhOGVmYzMwZjRiOTRjZjM3MjBiYTBiNjhmNTgifQ== Copy-Tag: eyJwIjoiRmlyZXN0b3JlLy5Pd2xCb3QueWFtbCIsImgiOiI4OTgzNzY5MjllODU0YThlZmMzMGY0Yjk0Y2YzNzIwYmEwYjY4ZjU4In0= Copy-Tag: eyJwIjoiTG9nZ2luZy8uT3dsQm90LnlhbWwiLCJoIjoiODk4Mzc2OTI5ZTg1NGE4ZWZjMzBmNGI5NGNmMzcyMGJhMGI2OGY1OCJ9 Copy-Tag: eyJwIjoiTG9uZ1J1bm5pbmcvLk93bEJvdC55YW1sIiwiaCI6Ijg5ODM3NjkyOWU4NTRhOGVmYzMwZjRiOTRjZjM3MjBiYTBiNjhmNTgifQ== Copy-Tag: eyJwIjoiVHJhY2UvLk93bEJvdC55YW1sIiwiaCI6Ijg5ODM3NjkyOWU4NTRhOGVmYzMwZjRiOTRjZjM3MjBiYTBiNjhmNTgifQ== Copy-Tag: eyJwIjoiVmlzaW9uQWkvLk93bEJvdC55YW1sIiwiaCI6Ijg5ODM3NjkyOWU4NTRhOGVmYzMwZjRiOTRjZjM3MjBiYTBiNjhmNTgifQ== * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
…ker (googleapis#9048) Bumps [requests](https://github.com/psf/requests) from 2.32.5 to 2.33.0. - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](psf/requests@v2.32.5...v2.33.0) --- updated-dependencies: - dependency-name: requests dependency-version: 2.33.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
- Refactor Rest.php hash calculation to be more concise using array_filter. - Remove redundant array initializations in Rest.php by utilizing PHP autovivification. - Improve readability of X-Goog-Hash header generation.
…eapis#9070) * feat: add origin to AttributeContext.Request docs: update comments and formatting PiperOrigin-RevId: 892442206 Source-Link: googleapis/googleapis@ebd1d23 Source-Link: https://github.com/googleapis/googleapis-gen/commit/fc58cd7189b2a6fb9342489b9eafedb001a11424 Copy-Tag: eyJwIjoiQ29tbW9uUHJvdG9zLy5Pd2xCb3QueWFtbCIsImgiOiJmYzU4Y2Q3MTg5YjJhNmZiOTM0MjQ4OWI5ZWFmZWRiMDAxYTExNDI0In0= * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * docs: update SelectiveGapicGeneration usage doc PiperOrigin-RevId: 892649773 Source-Link: googleapis/googleapis@06a20b2 Source-Link: https://github.com/googleapis/googleapis-gen/commit/d9ae66451f81c9df99dbdc9b23bd75d007380f4e Copy-Tag: eyJwIjoiQ29tbW9uUHJvdG9zLy5Pd2xCb3QueWFtbCIsImgiOiJkOWFlNjY0NTFmODFjOWRmOTlkYmRjOWIyM2JkNzVkMDA3MzgwZjRlIn0= * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
…precate `relax_safety_filters` (googleapis#9064) * feat: Support safety settings for Gemini voices and deprecate `relax_safety_filters` feat: Support `enable_textnorm` for Gemini voices. feat: Mark `advanced_voice_options` as optional. docs: A comment for field `relax_safety_filters` in message `.google.cloud.texttospeech.v1beta1.AdvancedVoiceOptions` is changed docs: A comment for field `advanced_voice_options` in message `.google.cloud.texttospeech.v1beta1.SynthesizeSpeechRequest` is changed docs: A comment for field `markup` in message `.google.cloud.texttospeech.v1beta1.SynthesisInput` is changed docs: A comment for field `markup` in message `.google.cloud.texttospeech.v1beta1.StreamingSynthesisInput` is changed PiperOrigin-RevId: 892460024 Source-Link: googleapis/googleapis@015ab81 Source-Link: https://github.com/googleapis/googleapis-gen/commit/5af795eed18ccb69c161b6772886dbcbc8f28e19 Copy-Tag: eyJwIjoiVGV4dFRvU3BlZWNoLy5Pd2xCb3QueWFtbCIsImgiOiI1YWY3OTVlZWQxOGNjYjY5YzE2MWI2NzcyODg2ZGJjYmM4ZjI4ZTE5In0= * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * feat: [Memorystore for Redis Cluster] Add support for Flexible CA feature PiperOrigin-RevId: 891808664 Source-Link: googleapis/googleapis@4a55538 Source-Link: https://github.com/googleapis/googleapis-gen/commit/22c11cd7f00bf34f030012fb2ddb46cd92c809c7 Copy-Tag: eyJwIjoiVGV4dFRvU3BlZWNoLy5Pd2xCb3QueWFtbCIsImgiOiIyMmMxMWNkN2YwMGJmMzRmMDMwMDEyZmIyZGRiNDZjZDkyYzgwOWM3In0= * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * feat: Support safety settings for Gemini voices and deprecate `relax_safety_filters` feat: Support `enable_textnorm` for Gemini voices. feat: Mark `advanced_voice_options` as optional. docs: A comment for field `relax_safety_filters` in message `.google.cloud.texttospeech.v1beta1.AdvancedVoiceOptions` is changed docs: A comment for field `advanced_voice_options` in message `.google.cloud.texttospeech.v1beta1.SynthesizeSpeechRequest` is changed docs: A comment for field `markup` in message `.google.cloud.texttospeech.v1beta1.SynthesisInput` is changed docs: A comment for field `markup` in message `.google.cloud.texttospeech.v1beta1.StreamingSynthesisInput` is changed PiperOrigin-RevId: 892460024 Source-Link: googleapis/googleapis@a481d8b Source-Link: https://github.com/googleapis/googleapis-gen/commit/80347618c38e2e98e5a08fbcf255e6c5be205124 Copy-Tag: eyJwIjoiVGV4dFRvU3BlZWNoLy5Pd2xCb3QueWFtbCIsImgiOiI4MDM0NzYxOGMzOGUyZTk4ZTVhMDhmYmNmMjU1ZTZjNWJlMjA1MTI0In0= * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
… CA feature (googleapis#9075) * feat: [Memorystore for Valkey] Add support for Flexible CA feature PiperOrigin-RevId: 893211666 Source-Link: googleapis/googleapis@1568178 Source-Link: https://github.com/googleapis/googleapis-gen/commit/0c9a0193430f73211e6e56ffbee75caf5f1f4aa4 Copy-Tag: eyJwIjoiTWVtb3J5c3RvcmUvLk93bEJvdC55YW1sIiwiaCI6IjBjOWEwMTkzNDMwZjczMjExZTZlNTZmZmJlZTc1Y2FmNWYxZjRhYTQifQ== * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
… to the AI Platform v1 API (googleapis#9074) * feat: add evaluation metrics and autorater configuration to the AI Platform v1 API feat: add evaluation configuration and dataset runs to TuningJob feat: add multimodal input support and custom output formats to evaluation metrics PiperOrigin-RevId: 893059415 Source-Link: googleapis/googleapis@582172d Source-Link: https://github.com/googleapis/googleapis-gen/commit/b8fd77676de0063e462654a94f38c9b17c4042f7 Copy-Tag: eyJwIjoiQWlQbGF0Zm9ybS8uT3dsQm90LnlhbWwiLCJoIjoiYjhmZDc3Njc2ZGUwMDYzZTQ2MjY1NGE5NGYzOGM5YjE3YzQwNDJmNyJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
…ut (googleapis#9072) * feat: Added a fields for image and table annotation output feat: Update comments for proto fields PiperOrigin-RevId: 893028748 Source-Link: googleapis/googleapis@280bed6 Source-Link: https://github.com/googleapis/googleapis-gen/commit/f1bd6d5615e4ac9b9a5015b2cb45c90ae1d901cd Copy-Tag: eyJwIjoiRG9jdW1lbnRBaS8uT3dsQm90LnlhbWwiLCJoIjoiZjFiZDZkNTYxNWU0YWM5YjlhNTAxNWIyY2I0NWM5MGFlMWQ5MDFjZCJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
… for Chat API ListMessages, GetMessage, GetSpaceEvent and ListSpaceEvents (googleapis#9076) * feat: Addition of Section and SectionItem APIs PiperOrigin-RevId: 893488928 Source-Link: googleapis/googleapis@76fdbf7 Source-Link: https://github.com/googleapis/googleapis-gen/commit/b4ed90249717c1799ab53f33c1428f2f5a89118f Copy-Tag: eyJwIjoiQXBwc0NoYXQvLk93bEJvdC55YW1sIiwiaCI6ImI0ZWQ5MDI0OTcxN2MxNzk5YWI1M2YzM2MxNDI4ZjJmNWE4OTExOGYifQ== * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * feat: Support app authentication with admin-consent scopes for Chat API ListMessages, GetMessage, GetSpaceEvent and ListSpaceEvents docs: Update reference documentation for Chat API ListMessages, GetMessage, GetSpaceEvent and ListSpaceEvents. PiperOrigin-RevId: 893619899 Source-Link: googleapis/googleapis@8d52a0b Source-Link: https://github.com/googleapis/googleapis-gen/commit/eeac8ca6613a9bcfd90c07de78ca76d58c00bbbf Copy-Tag: eyJwIjoiQXBwc0NoYXQvLk93bEJvdC55YW1sIiwiaCI6ImVlYWM4Y2E2NjEzYTliY2ZkOTBjMDdkZTc4Y2E3NmQ1OGMwMGJiYmYifQ== * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
Enhanced Checksum Validation & Header Logic
This PR implements comprehensive MD5 and CRC32c checksum validation for object uploads, ensuring data integrity via the
X-Goog-Hashheader, improving data integrity verification. It refactors the upload architecture to handle hashes dynamically across different upload strategies.Key Technical Changes
1. Core Library Enhancements (
google-cloud-core)ResumableUploader&StreamableUploader: Added type-safe logic(int)($rangeEnd + 1) === (int)$sizeto ensureX-Goog-Hashis transmitted only on the final chunk/request, preventing intermediate validation errors.MultipartUploader: Standardized header merging to ensure hashes calculated by the connection layer are always included in single-shot uploads.restOptionsmerging to ensure custom metadata and encryption headers are preserved alongside checksums.2. Storage Package Improvements (
google-cloud-storage)MD5orCRC32chashes when thevalidateoption is enabled.Bucket::upload()to honor user-provided checksums and prevent redundant re-calculation.BucketTestandRestTestto verify hash behavior in resumable, streamable, and multipart scenarios.Note
CI "Lowest Dependencies" Failure: This failure occurs because the CI environment pulls the tagged version of
google-cloud-corefrom Packagist instead of using the local changes in this PR. This will resolve once the Core changes are merged.