Repository navigation
SK-3223, SK-3233 implementation of new flowvault interfaces in go sdk - #205
Conversation
- common/vault: generic per-operation interfaces (Inserter, Updater, Getter, Deleter, Querier, Detokenizer, TokenGetter, FilesUploader, FilesDeleter) that the v2 and flowvault vault services both implement. - config: HttpConfig and the Timeout, MaxRetries, InitialRetryDelay and MaxRetryDelay fields on VaultConfig, rejected when negative. - config: Env now starts at 1 so the zero value means "not set" (resolves to PROD); Env.IsSet() lets updates keep the current Env. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- v2/client/operations.go: compile-time checks that the v2 vault service implements the common/vault Insert, Update, Get, Delete, Query and Detokenize interfaces. No behaviour change. - UpdateVaultConfig only changes Env when the update sets one, instead of resetting it to PROD. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Implements Insert, Update, Get, Delete, Detokenize, GetTokens, Query, UploadFiles and DeleteFiles on the generated FlowService /v2 client. - Validation matching the Java and Python FlowVault SDKs: table name and upsert at exactly one level, request-level UpdateType, unique column checks, DeleteFiles record limit and duplicate columns. - Per-call headers through an Interceptor on every operation's options. - Timeout and retries (408, 429, 5xx with backoff and jitter) configured per client (WithHttpConfig) or per vault; off by default. - UploadFiles requests signed URLs, then uploads at most 5 files at once with a separate client: no retries, no overall timeout, no SDK headers. - Per-record results for partial failures, including non-2xx responses that carry records; whole-call failures map to SkyflowError. - Client is safe for concurrent use; credential changes drop cached tokens. - FlowVault vaults are reached on the skyvault subdomain. - SDK name skyflow-flowvault-go in the metadata header. - Removes the unwired client-level WithCustomHeaders. - Unit tests against a fake FlowService server; fake keys live in flowvault/test/resources. - samples/flowvault: one sample per operation, custom headers, timeout/retry config and service-account token generation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pin common to 6115e81 (shared vault interfaces, HTTP config, unset Env) in v2 and flowvault, and build the flowvault samples against that version instead of the local common folder. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Promptless documentation updates
|
skyflow-himanshupal
requested review from
saileshwar-skyflow and
yaswanth-pula-skyflow
October 23, 2026 05:33
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.
Implements the nine unary FlowVault operations in the new
flowvaultGo module, on the generated FlowService/v2client, with samples. Depends on SK-3222 (adds thecommonandflowvaultmodules); merge that first.Why
Goal
Insert,Update,Get,Delete,Detokenize,GetTokens,Query,UploadFilesandDeleteFileswork against FlowVault vaults, following the design doc and Java/Python behaviour:UpdateTypeSkyflowErrorwith the request IDInterceptoron every operation's optionsWithHttpConfig) or per vault; retries off by defaultUploadFilesgets signed URLs, then uploads at most 5 files at once on a separate client: no retries, no overall timeout, no SDK headersskyvaultsubdomain (the SK-3222 skeleton had v2'svaultdomains).samples/flowvault: one sample per operation, plus custom headers, timeout/retry config and service-account token generation (same set as Python).Changes outside
flowvault(commit6115e81, pinned inv2,flowvaultand the samples):common/vault: shared generic interfaces (Inserter[Req, Opts, Resp], …) that both the v2 and flowvault vault services implement (compile-time checks only).common/config:HttpConfigand the HTTP fields onVaultConfig.common/config:Envnow starts at 1, so 0 means "not set" (still resolves to PROD).UpdateVaultConfigin v2 and flowvault keeps the currentEnvwhen an update doesn't set one; before, it reset to PROD. Behaviour note for v2: code that stores or comparesEnvas a raw number sees values shifted by one.Removed: the client-level
WithCustomHeadersfrom the SK-3222 flowvault skeleton (it was never wired up, and isn't in the design doc). v2'sWithCustomHeadersis unchanged.Non-goals: bulk/async operations, separate connect/read/write timeouts, the Go e2e suite in
sdk-integration-testsand the flowvault README (follow-ups).Testing
-race; lint shows 0 issues onflowvaultandv2.flowvault/test/resources, so gitleaks reports nothing.UploadFilesandDeleteFiles. The dev file servicet, including a raw request without the SDK (e.g. request IDs0099c30e-548d-4ccc-b0a0-5a70cf13163c,9d458b74-c392-425f-9485-9be1c1258cbb). To be re-run once it is back.mainlocally, all needing CI secrets.Tech debt
v2,flowvaultand the samples pincommonto a pseudo-version of6115e81. After SK-3222 merges and this branch is rebased, the pins must be updated to the mergedcommon(or acommon/vX.Y.Ztag).samples/flowvault/go.moduses a localreplaceforflowvaultuntil it is published.v2; jobs forcommon,flowvaultand the samples are needed.