chore(worker): set `placement.region = aws:us-east-1`; add the 5-round-trip budget counter to the contract suite
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 48/100
- Issue 类型
- 功能
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- postgresql, rust
- 领域
- backend, databases, performance, testing
调研方向
Read crates/thrust-worker/wrangler.toml and wrangler.stage2.toml, then inspect the Pg wrapper in crates/thrust-adapters-postgres/src/lib.rs and the contract suite described in docs/src/architecture/app.md. Check the existing benchmark entry point in crates/thrust-contract-tests/src/bin/bench.rs and coordinate its deployed runs with issue #37, which recreates the deleted Stage 2 resources. Done means both configs pass dry-run, the Postgres contract test enforces the five round-trip limit and kills its mutant, memory targets are explicitly excluded, placement is verified, and benchmark results are recorded.
由索引模型根据 Issue 内容生成。
描述
Context
Neither crates/thrust-worker/wrangler.toml nor wrangler.stage2.toml has a [placement] section. The database is in us-east-1: ADR-0094:39, and the thrust-pg instances run on us-east-1a and us-east-1b nodes (research/0010:316). The Stage 2 numbers were taken from one laptop in the US east: list p95 86 ms, create p95 296 ms at c=1 and 559 ms at c=8, and 595 to 615 ms for the first database request on a fresh isolate (research/0004:383-387). Every statement goes through the Pg wrapper as one round trip (crates/thrust-adapters-postgres/src/lib.rs:106-127); today a list costs two (membership at lines 187-191, the list at lines 229-230). The contract suite is a black-box HTTP suite (docs/src/architecture/app.md:68), and bench takes iterations and concurrency (crates/thrust-contract-tests/src/bin/bench.rs:2).
Problem
The p95 < 500 ms target (SPEC.md:78) is set by three things the plan does not budget: placement, query count and the cold path.
- Placement: Cloudflare puts each sequential query at 20 to 30 ms from a distant region and 1 to 3 ms when the Worker is placed nearby (hyperdrive/concepts/how-hyperdrive-works), and placement hints accept
placement.region = "aws:us-east-1"(workers/configuration/placement). - Query count: Plane's project page fires 13 reads and its workspace wrapper fires 9 (
research/0003:47-48). Without a budget, the compat layer will reproduce Django's N+1 query shapes. - Measurement: where p95 is measured is still open (Q-G5.2,
QUESTIONS.md:299;SPEC.md:83).
Proposal
Covers FR-08 items (1) to (3). The plan side is the ADR-0040 (S3, S5) and ADR-0094 round-29 notes and the SPEC §6.4 text.
- Add to both wrangler files:
[placement] region = "aws:us-east-1" - Budget list endpoints at no more than 5 database round trips per request. The Postgres adapter counts every statement issued through
Pgduring one request (the review's "countingConnector") and reports the count only whenTHRUST_TEST_ROUTESis on, for example in anx-thrust-db-round-tripsresponse header. A contract test asserts the count on the Postgres targets. - Re-run
benchat c=1 and c=8 against the deployed Worker with placement set, from the same vantage point asresearch/0004§10.3. The Stage 2 resources were deleted (wrangler.stage2.toml:3), so run this together with the spike 0002 runs in #37, which recreate them and also add the distant-region bench. - Context for Q-G5.2, which the plan edits answer: "p95 of a synthetic probe from the origin's region on the warm path, 5-minute cadence, cold starts reported separately; availability over a rolling 30 days on the same probe". FR-08 (4), the allocation order, is measured in #37.
Acceptance criteria
-
grep -n 'region = "aws:us-east-1"' crates/thrust-worker/wrangler*.tomlmatches both files, andwrangler deploy --dry-runaccepts the config. - The Workers API reports the deployed Worker's placement (workers/configuration/placement, "Check placement status").
- Contract test
list_endpoints_stay_within_five_db_round_tripspasses onnative-pgandworker-cf, and it fails against a mutant that issues one extra statement per returned row. Add the mutant toscripts/mutants.sh, where it must be reported KILLED. - On the memory targets, which count nothing, the test is excluded explicitly and the expected pass count is adjusted, so it cannot pass vacuously.
- The c=1 and c=8 results with placement on are recorded next to the
research/0004§10.3 table.
References
- Review: .agents/plans/contrail/reviews/2026-10-19-fable-architecture-review.md (FR-08)
crates/thrust-worker/wrangler.toml;crates/thrust-worker/wrangler.stage2.toml;crates/thrust-adapters-postgres/src/lib.rs:106-127,187-191,229-230;crates/thrust-contract-tests/src/bin/bench.rs- SPEC §6.4 (
SPEC.md:78,83); Q-G5.2 (QUESTIONS.md:299); ADR-0040 S3 and S5 (adrs/data/base/0040-system-of-record-database.md:82,84); ADR-0043; ADR-0094:39 research/0004§10.3 (research/0004-rust-on-workers-binding-matrix.md:383-387);research/0003-compat-plane-inventory.md:47-48; spike 0002 step 7- Cloudflare docs: workers/configuration/placement; hyperdrive/concepts/how-hyperdrive-works
Finding: FR-08
- 主要语言
- Rust
- 星标
- 0
- 派生
- 0
- 平均合并
- 1 小时 35 分钟
- 30 天内合并 PR
- 67
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
aRustyDev/thrust 的其他 Issue
-
area:process prio:p1 type:security
难度 4/5 3-5 天 新手友好度 48/100
维护者通常 1 天内回复
-
area:process bug prio:p1
难度 4/5 3-5 天 新手友好度 38/100
维护者通常 1 天内回复
-
area:process prio:p1
难度 4/5 3-5 天 新手友好度 55/100
维护者通常 1 天内回复
-
area:process prio:p1
难度 4/5 1-2 天 新手友好度 55/100
维护者通常 1 天内回复
-
area:process prio:p1
难度 4/5 3-5 天 新手友好度 56/100
维护者通常 1 天内回复
相似的 Issue
-
yara-x fails to build with rsa 0.10.0: unresolved import rsa::Pkcs1v15Sign可能已有人在做 @CfirTsabari 今天认领。 未关闭
难度 1/5 1 小时以内 新手友好度 87/100
VirusTotal/yara-x#865 ·
维护者通常 1 天内回复
-
good first issue help wanted program
难度 2/5 1-3 小时 新手友好度 83/100
hffgzktbcc-blip/ounce-core#297 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
nautechsystems/nautilus_trader#5631 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 69/100
bytecodealliance/rustix#1736 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
longbridge/gpui-kit#3871 ·
维护者通常 1 天内回复