Repository navigation
Mirror provider EIDs to a cookie and run pull sync as an identity provider #1489
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
Open
Open
Changes from all commits
Commits
Show all changes
20 commits
Select commit
Hold shift + click to select a range
25d96e9
Run pull sync as an identity provider on navigations
dhruv8sh b7e33fc
Mirror provider-owned bidstream UIDs to a JS-readable cookie
dhruv8sh 3679de3
Make mirroring best effort and fix pull sync validation
dhruv8sh 07a96ee
Stop mirroring ownerless UIDs and re-pulling held pull-sync sources
dhruv8sh 99895ae
Keep batch sync for pull-sync partners
dhruv8sh c8f08f8
Set the mirror cookie only when its value changes
dhruv8sh 024e147
Skip identity lookups when the rate limiter cannot count
dhruv8sh 4c5beac
Reject the pull-sync kind in identity provider config
dhruv8sh 864f95d
Refuse to key the template cache on the EID mirror cookie
dhruv8sh 902b08d
Rotate pull-sync partners hourly so every partner gets a turn under t…
dhruv8sh e12d56e
Document pull-sync rate limit rounding, the per-navigation cap and mi…
dhruv8sh a7e67a1
Test mirroring of pull-sync results, non-navigations and withdrawn rows
dhruv8sh a6f397f
Test the pull-sync UID cap at the provider write limit
dhruv8sh 7360a0e
Address review of pull sync and the EID mirror
dhruv8sh 9de1d04
Address the third review of pull sync and the EID mirror
dhruv8sh 7cb5369
Adapt pull sync tests to the base's snapshot and test-support changes
dhruv8sh 8a8e919
Expire the mirror only when it holds a denied vendor's UIDs
dhruv8sh 58b34c4
Adapt pull sync to the vendor providers' optional endpoint and lookup…
dhruv8sh 61efaf8
Keep pull-sync UIDs within the legacy 512-byte limit and document the…
dhruv8sh d3780ba
Add the PR #1489 review rounds to the S2S EID spec
dhruv8sh File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
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.
🔧 wrench —
any_dueskips the cookie read, so after-response providers miss opt-outsOn the base, every permitted navigation called
dispatchfor the after-response coordinator with the request cookies.dispatchreads each provider's own first-party cookies even while its sources hold live UIDs (coordinator/mod.rs:626: "so an opt-out or a changed ID is noticed while the sources still hold live UIDs"). ACookieRead::OptedOutthen removes the provider's stored UIDs.This early return calls
any_due, which looks only atdue_sourcesand never atread_request_cookies. Take a cookie-reading provider (sharedid, id5, uid2, liveramp, criteo, connectid or unifiedid) configured withcollect = "after_response", whose source already holds a live UID:any_duereturnsfalse, so this function returns beforedispatch.The comment above this check covers a withdrawal but not this path. A temporary coordinator test at this head confirms the divergence: with a held provider-written UID and
vendor_id=optout,any_duereturnsfalse, whiledispatchreturnsSkipped(OptedOut)and clears the source.Proposed fix (apply manually: touches
coordinator/mod.rsand this call site). A provider whose cookies yield anything other thanAbsentcounts as due:Here, pass
RequestCookies::new(&lookups.cookie_header)andec_state.ec_context.consent().gdpr_applies.RequestCookiesisCopy. Pull-sync-only deployments keep the saved read; a navigation carrying a provider's cookie reads the row as the base did. Please add a regression test: a held source plus an opt-out cookie still dispatches. The fix is untested.