Add Go GCS external storage driver snippet - #866
Merged
Conversation
Adds the driver-creation snippet for the Google Cloud Storage external storage driver, matching the existing s3_setup layout. The region go-gcs-driver-create is consumed by the Go External Storage docs page. The snippet is the code I ran end to end against a real GCS bucket: a 3 MiB payload round-tripped through a Workflow and Activity intact, and the Event History carried an ExternalStorageReference rather than the payload data. go.temporal.io/sdk/contrib/gcp/gcsdriver has no release tag yet, so both it and its gcssdk companion are pinned to a pseudo-version at sdk-go main. Those modules declare go 1.25.4, which raises this module's go directive from 1.24.0 to match. The repository root module is already at 1.25.4.
Reverts features/go.mod and features/go.sum to main, leaving only the snippet file on this branch. The dependency work has to be redone at tag time anyway: the two pseudo-version pins become real versions, the go directive lands wherever the tagged modules declare, and the transitive tree resolves differently. Carrying a throwaway version of it here only forces a premature decision about raising this module's Go floor to 1.25.4. The consequence is that the gcs_setup package does not compile on this branch, because gcsdriver, gcssdk, and cloud.google.com/go/storage are absent from go.mod. That is expected until the tag lands.
cconstable
approved these changes
Aug 13, 2026
lennessyy
added a commit
to temporalio/documentation
that referenced
this pull request
Aug 13, 2026
temporalio/features#866 merged, so the go-gcs-driver-create region now exists upstream. Replaces the hand-written GCS code block with a Snipsync wrapper, which adds the source link and keeps the sample tied to code the features repo builds. Also names the processes that need bucket credentials, rather than saying "components": the Client and the Workers each reach the bucket directly. Points at the Amazon S3 and Cloud Storage access control documentation for granting that access.
lennessyy
added a commit
to temporalio/documentation
that referenced
this pull request
Aug 13, 2026
* docs: add Google Cloud Storage setup to Go External Storage Adds GCS alongside Amazon S3 on the Go External Storage page, mirroring the structure of the TypeScript page. The setup section now uses tabs with the shared `external-storage-backend` group id so the backend choice follows the reader across SDK pages. Also corrects the shared post-setup prose, which described only the S3 driver. Both drivers use content-addressable SHA-256 keys, deduplicate within a Namespace and Workflow, verify the hash on retrieve, and enforce a 50 MiB `MaxPayloadSize` default. Adds the read-permission prerequisite, since both drivers check for an existing object before uploading. Details verified against contrib/gcp/gcsdriver in sdk-go. * docs: clarify when the storage drivers reuse an object Verified the GCS driver end to end against a real bucket: a 3 MiB payload round-tripped intact, the Event History carried an ExternalStorageReference instead of the data, and the object keys matched the documented structure. That test showed the earlier dedup wording was wrong. It claimed identical payloads within a Namespace and Workflow are stored once, but the object key also includes the Run ID, so the same bytes in a different Run are stored again. Reworded to state which boundaries share an object and which do not. * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * docs: source the GCS snippet from Snipsync and clarify credentials temporalio/features#866 merged, so the go-gcs-driver-create region now exists upstream. Replaces the hand-written GCS code block with a Snipsync wrapper, which adds the source link and keeps the sample tied to code the features repo builds. Also names the processes that need bucket credentials, rather than saying "components": the Client and the Workers each reach the bucket directly. Points at the Amazon S3 and Cloud Storage access control documentation for granting that access. * docs: rewrap the object key paragraph after the identifier fix --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds
features/snippets/external_storage/gcs_setup/gcs_driver_create.go, exposing thego-gcs-driver-createregion consumed by the Go External Storage docs page. Layout mirrors the existings3_setupsnippets (package gcssetup, function returning aconverter.StorageDriver).Docs PR that consumes it: temporalio/documentation#5101.