Skip to content

feat(storage): support checksum validation in resumable json uploads#13573

Merged
krishnamd-jkp merged 2 commits intogoogleapis:mainfrom
krishnamd-jkp:json_resumable
Jan 14, 2026
Merged

feat(storage): support checksum validation in resumable json uploads#13573
krishnamd-jkp merged 2 commits intogoogleapis:mainfrom
krishnamd-jkp:json_resumable

Conversation

@krishnamd-jkp
Copy link
Contributor

No description provided.

@krishnamd-jkp krishnamd-jkp requested review from a team January 11, 2026 15:17
@krishnamd-jkp krishnamd-jkp requested a review from a team as a code owner January 11, 2026 15:17
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @krishnamd-jkp, 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 by introducing checksum validation for resumable JSON uploads, ensuring data consistency during transfers. It also includes routine updates to various Go module dependencies.

Highlights

  • Checksum Validation for JSON Uploads: Implemented checksum validation for resumable JSON uploads, enhancing data integrity during transfers.
  • Writer Configuration Clarification: Clarified the behavior of the DisableAutoChecksum field in the Writer struct, explicitly stating its applicability to both gRPC and JSON uploads, with per-chunk checksum calculations for JSON.
  • Dependency Updates: Updated several Go module dependencies to their latest versions, including cloud.google.com/go/auth, github.com/googleapis/gax-go/v2, and various golang.org/x and google.golang.org packages.

🧠 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 Assist

The 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 /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

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 .gemini/ folder in the base of the repository. Detailed instructions can be found here.

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

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

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

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 adds support for checksum validation in resumable JSON uploads by leveraging a new option from an updated google.golang.org/api dependency. The implementation is straightforward and the accompanying documentation update in writer.go is clear. I've added one comment suggesting the addition of a unit test to ensure the new logic is covered and to prevent future regressions. Otherwise, the changes look good.

Comment on lines +1017 to +1019
if !params.disableAutoChecksum {
mediaOpts = append(mediaOpts, googleapi.EnableAutoChecksum())
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This change introduces new functionality for checksum validation. To ensure its correctness and prevent future regressions, please consider adding a unit test. The test should verify that googleapi.EnableAutoChecksum() is correctly passed in mediaOpts based on the disableAutoChecksum parameter.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add a test if it can be unit tested.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The surface is not really suitable to run a unit test here. If OpenWriter is called in solitary, there will be a blocked goroutine which is not very ideal.

Comment on lines +1017 to +1019
if !params.disableAutoChecksum {
mediaOpts = append(mediaOpts, googleapi.EnableAutoChecksum())
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add a test if it can be unit tested.

@quartzmo quartzmo changed the title feat: support checksum validation in resumable json uploads feat(storage): support checksum validation in resumable json uploads Jan 13, 2026
@quartzmo
Copy link
Member

@krishnamd-jkp Please use the storage scope for your conventional commits, for example: feat(storage):.

@krishnamd-jkp krishnamd-jkp merged commit 337ca07 into googleapis:main Jan 14, 2026
12 checks passed
krishnamd-jkp added a commit that referenced this pull request Feb 10, 2026
PR created by the Librarian CLI to initialize a release. Merging this PR
will auto trigger a release.

Librarian Version: v0.8.0
Language Image:
us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/librarian-go@sha256:19bb93e8f1f916c61b597db2bad65dc432f79baaabb210499d7d0e4ad1dffe29
<details><summary>storage: 1.60.0</summary>

##
[1.60.0](storage/v1.59.1...storage/v1.60.0)
(2026-02-10)

### Features

* adding support for max-retry-duration for all api other than
resumable-upload (#13749)
([31c352b](31c352bd))

* support checksum validation in resumable json uploads (#13573)
([337ca07](337ca078))

* Added a new field `ComposeObjectRequest.delete_source_objects` field
(PiperOrigin-RevId: 863087065)
([611f239](611f2392))

### Bug Fixes

* change TestValidateChecksumFromServer error message (#13810)
([0741414](07414143))

* fix panic error in transfermanager downloads (#13815)
([4272271](42722719))

* deadlock in event loop while coordinating channels (#13652)
([7d9d00c](7d9d00c6))

### Documentation

* Updated documentation for `BidiReadObject`, `ReadObjectRequest`, and
`ObjectContexts` (PiperOrigin-RevId: 863087065)
([611f239](611f2392))

</details>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants