Repository navigation
Collect server-side identity provider EIDs in a single page-load write #1487
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
5b86758
00fb3b6
3f36d00
b64bd15
49b73b2
9e2a2d7
c559b89
4ab0a1c
e43ea9a
dfd160a
1b84e3c
7db9e88
7c35af4
2de6d0d
8320c3f
ff5113d
f0e2fb0
97e6806
665f8d3
c4684f6
09cad52
17072f4
54079ae
a987581
e681663
ef7ad61
d45b508
e171d1d
cbe3a2b
ca915db
97a69f1
a6adc26
eb2c868
aade0ff
49ec524
dbb9fa6
1826524
bc65fb9
b334e75
d83509c
889159c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -14,10 +14,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | |||||
| measured from dispatch, including delayed headers and trickling bodies on all | ||||||
| adapters. Complete available responses survive a slow publisher origin; | ||||||
| unfinished providers time out and mediation is skipped after budget exhaustion. | ||||||
| Provider bids that are already complete at the final nonblocking snapshot remain | ||||||
| Provider bids that are already complete at the final snapshot remain | ||||||
| eligible even after `tmax`; mediation starts only with remaining budget and | ||||||
| rejects responses collected after its cutoff. | ||||||
| Fastly abandons unfinished requests; Axum, Cloudflare, and Spin cancel owned work. | ||||||
| On Fastly the final snapshot may wait up to 1 ms per partially received body so | ||||||
| the host can surface bytes that already arrived, and keeps a response whose | ||||||
| headers arrived by the cutoff. | ||||||
| - Added server-side identity providers (`[[ec.identity_providers]]`, Fastly only). Enabled providers look up a visitor's IDs on publisher navigations within `ec.identity_budget_ms` (1–1000, default 200), or after the response within `ec.identity_after_response_budget_ms` (1–5000, default 2000) for `collect = "after_response"`. A provider owns its `sources`: batch sync rejects them with the new `provider_owned` reason, pull sync skips them, and browser IDs never fill them. Set `tcf_vendor_id` to gate both lookups and the provider's stored IDs in bidstream and `/identify` on TCF vendor consent. See [Identity providers](docs/guide/configuration.md#identity-providers). | ||||||
| - Batch sync reports a new `row_full` item reason when a mapping would push the EC row past its size limit, and continues with the remaining groups. | ||||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ⛏ The 16 KiB row cap is new for every writer but appears in no operator doc Main had no cap. Same change suggested for
Suggested change
|
||||||
| - **Breaking:** An EC is now minted, and the EC row written, only on a top-level publisher navigation: a `GET` with `Sec-Fetch-Dest: document`, `Sec-Fetch-Mode: navigate` and no `prefetch` in `Sec-Purpose`. Clients that send no Fetch Metadata get no EC, integration proxies and `/auction` no longer mint one, and prefetches and prerenders never mint or write. Each navigation makes at most one conditional page-load write; a consent withdrawal's tombstone is still written on any request that carries the EC cookie. | ||||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ⛏ A redirected first navigation now mints no EC, and On main a first-visit navigation answered with a 301/302/303/307/308 created the row and set
Suggested change
|
||||||
| - **Breaking:** Browser EIDs from the `/auction` request body are no longer stored, and `/auction` and `/_ts/page-bids` no longer write browser EIDs from `ts-eids` or `sharedId`. Those cookies are ingested on the next top-level navigation. | ||||||
| - **Breaking:** An EC minted on the current navigation is no longer sent as `user.id` to bidders, and identity providers are not called for it, until a later navigation finds its row. | ||||||
| - **Breaking:** Axum, Cloudflare and Spin refuse to start when an enabled identity provider is configured, and Fastly refuses to start when an enabled provider names a `kind` this build does not include. | ||||||
| - **Breaking (rollback):** Stored provider UIDs may be up to 1024 bytes (browser, batch and pull ingest stay at 512). A binary from before this release cannot read an EC row holding a longer UID, so roll back only after such rows expire or are rewritten. A config blob that sets `ec.identity_providers` or a non-default identity budget cannot be loaded by an older binary; restore the defaults and re-push before rolling back. | ||||||
| - Explicit TS Console activation with `?ts_console=1` now sets a 30-minute diagnostics cookie instead of a browser-session cookie, independently of the mobile trace flag. Ordinary requests do not refresh it; end and explicitly enable diagnostics again to adopt the lifetime for an existing session. | ||||||
| - Publisher documents with diagnostics active now use private, no-store responses and strip conditional and range request headers before fetching the origin. An unexpected origin `304` becomes a private `502` because it cannot supply an instrumented document, including when mobile tracing is disabled. | ||||||
| - **Breaking:** `x-ts-version` now reports the deployed git version — the release tag, else the branch, else the first 6 characters of the commit — compiled in from the build-time `TRUSTED_SERVER__GIT_VERSION` (set by the deploy pipeline) or local git, and is sent by every adapter, including on the Fastly `GET /health` probe. The Fastly service version it previously carried is now `x-ts-fastly-version`; update dashboards, monitors, and scripts that read `x-ts-version` as the Fastly version number. Builds with neither the override nor git omit the header. | ||||||
|
|
||||||
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
⛏ This overstates the snapshot change (the wording came from our round-1 comment)
A response whose headers arrived but whose body is still incomplete after the 1 ms surface is still abandoned (
deadline.rs:285-288). The change only stops abandoning it before its body is read. The same sentence is inauction-orchestration.md:832andconfiguration.md:2554; there are suggestions on both. Prettier-clean.