Skip to content

Release - #230

Merged
ovaistariq merged 2 commits into
releasefrom
main
Sep 19, 2026
Merged

ovaistariq merged 2 commits into
releasefrom
main

Conversation

@ovaistariq

@ovaistariq ovaistariq commented Sep 19, 2026 •

Copy link
Copy Markdown
Contributor

Cuts v1.22.1 — tiered store mode on non-Tigris endpoints (#229, #231), found while preparing its first deployment; no change for transparent or signing deployments.

Tiered mode works on non-Tigris S3 endpoints (#229). v1.22.0 wired tiered to the transparent forwarding path unconditionally (proxy headers, keys learned from Tigris) and pinned it to Tigris endpoints, so a tiered deployment fronting any other S3-compatible store failed at startup. Tiering is a caching topology, not a forwarding flavor: Config.ForwardsTransparently() is now the single join point — transparent mode forwards transparently, signing never does, and tiered derives it from the endpoint (Tigris → transparent; otherwise → signing via the credential store). The startup log states the flavor. On non-Tigris endpoints the cross-tier cleanup DELETE is disabled by construction (tag_tiered_cleanup_total{outcome="unverified_backend"}): its safety rests on the backend enforcing If-Match, verified on Tigris only, and a backend that accepted-but-ignored it could delete a racing replacement. Displaced upstream copies age out by bucket expiry instead. Tigris host matching is case-insensitive now that it selects the flavor, and it is strict (#231): localhost remains allowed for transparent-mode local testing but is not a trust claim about the backend, so a tiered deployment on localhost forwards by signing with cleanup disabled. Docs scope the delete-permission requirement to Tigris-backed tiered deployments.

Validation: full suite, race, lint; tiered s3-compat CI job; both tiered shapes booted from the release commit — non-Tigris endpoint → Signing forwarding enabled + fenced CAS; Tigris endpoint → transparent path, unchanged.

🤖 Generated with Claude Code

https://claude.ai/code/session_01L5DLvDTo9dhD38YQXhHpU9

* fix: tiered mode forwards by signing on non-Tigris endpoints

Tiering is a caching topology, not a forwarding flavor, but v1.22.0 wired
tiered to the transparent path unconditionally (proxy headers, learned
keys) and pinned it to Tigris endpoints — so a tiered deployment fronting
any other S3-compatible store failed at startup, and had the validator
been bypassed it would have forwarded client signatures valid for the
wrong host and never learned a key.

Config.ForwardsTransparently is now the single join point: transparent
mode forwards transparently, signing never does, and tiered derives it
from the endpoint (Tigris → transparent, otherwise → signing via the
credential store). The endpoint validator pins only transparent mode to
Tigris; main.go's proxy-signer, credential, and local-auth forks key on
the helper. Startup logs the selected flavor and, on a non-Tigris
endpoint, warns that the cleanup DELETE's If-Match ordering is verified
on Tigris only. Comments and docs that called tiered "endpoint-locked to
Tigris" corrected.
@greptile-apps

greptile-apps Bot commented Sep 19, 2026 •

Copy link
Copy Markdown

RetriggerConfidence Score: 5/5

The PR appears safe to merge; the previous localhost safety and credential-documentation findings are fully addressed, with no new actionable issues identified.

Summary

This release fixes tiered mode for non-Tigris S3-compatible endpoints while preserving transparent forwarding for Tigris endpoints.

  • Centralizes forwarding-flavor selection in Config.ForwardsTransparently.
  • Separates strict Tigris endpoint detection from transparent mode’s localhost testing allowlist.
  • Disables conditional cross-tier cleanup on backends whose If-Match DELETE behavior is unverified.
  • Updates startup diagnostics, metrics documentation, deployment guidance, and tests for both forwarding flavors.

Reviews (2) · Last reviewed commit: "fix: localhost is not a Tigris endpoint ..."

Comment thread config/config.go
Comment thread docs/tiered-mode.md Outdated

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 5ad46d4. Configure here.

Comment thread config/config.go Outdated
…231)

* fix: localhost is not a Tigris endpoint for tiered flavor selection

IsTigrisEndpoint conflated two questions: which endpoints transparent
mode may target (Tigris domains, or localhost for local testing) and
which backends are trusted to behave like Tigris (headers understood,
keys learnable, If-Match on DELETE enforced). Once it began selecting
tiered mode's forwarding flavor, a localhost stand-in — a local MinIO —
took the transparent path and re-enabled the cross-tier cleanup DELETE
the unverified_backend gate exists to withhold.

IsTigrisEndpoint is now strict (Tigris domains only, case-normalized)
and drives the flavor; IsTransparentEndpoint (Tigris or localhost, any
case) is the transparent-mode allowlist the validator uses. Docs scope
the delete-permission requirement to Tigris-backed tiered deployments —
on the signing flavor the key never issues a DELETE and needs read only.
@ovaistariq
ovaistariq merged commit 8b8b884 into release Sep 19, 2026
11 checks passed
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 19, 2026
@tigrisdata-argocd-bot

Copy link
Copy Markdown

🎉 This PR is included in version 1.22.1 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants