Enforce auction timeout in orchestrator wait logic#469
Open
ChristianPavilonis wants to merge 2 commits intomainfrom
Open
Enforce auction timeout in orchestrator wait logic#469ChristianPavilonis wants to merge 2 commits intomainfrom
ChristianPavilonis wants to merge 2 commits intomainfrom
Conversation
- Pass remaining time budget to each provider instead of full timeout, so backend first_byte_timeout cannot exceed the auction deadline - Extract remaining_budget_ms helper and add unit tests for it - Simplify from_url_with_first_byte_timeout to take Duration (not Option) - Fix misleading doc on ensure() to note timeout is not in backend name - Update TODO comment with specific untested timeout paths
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.
Summary
settings.auction.timeout_ms) in the orchestrator'sselect()loop — previously, waits could extend to the backend's hardcoded 15sfirst_byte_timeout, ignoring the auction deadline.first_byte_timeoutis set totimeout_msinstead of 15s, and (2) the orchestrator checks elapsed time after eachselect()return, dropping remaining requests when the deadline is exceeded.Changes
crates/common/src/backend.rsfirst_byte_timeoutfield toBackendConfig(default 15s), builder method, timeout-aware backend naming, andfrom_url_with_first_byte_timeout()convenience methodcrates/common/src/auction/orchestrator.rsselect()loop — trackauction_start, drop remaining requests when timeout exceeded, pass only remaining time to mediatorcrates/common/src/integrations/prebid.rsfrom_url_with_first_byte_timeout()withcontext.timeout_msfor bid requestscrates/common/src/integrations/aps.rsfrom_url_with_first_byte_timeout()withcontext.timeout_msfor bid requests; rename_context→contextcrates/common/src/integrations/adserver_mock.rsfrom_url_with_first_byte_timeout()withcontext.timeout_msfor mediation requestsCloses
Closes #405
Test plan
cargo test --workspacecargo clippy --all-targets --all-features -- -D warningscargo fmt --all -- --checkcd crates/js/lib && npx vitest runcd crates/js/lib && npm run formatcd docs && npm run formatcargo build --bin trusted-server-fastly --release --target wasm32-wasip1fastly compute serveChecklist
unwrap()in production code — useexpect("should ...")tracingmacros (notprintln!)