chore(worker): set `placement.region = aws:us-east-1`; add the 5-round-trip budget counter to the contract suite

Đang mở
#39 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
48/100
Loại issue
Tính năng
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
postgresql, rust

Hướng nghiên cứu

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.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

area:infra prio:p0 review:fable-2026-10-19

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 Pg during one request (the review's "counting Connector") and reports the count only when THRUST_TEST_ROUTES is on, for example in an x-thrust-db-round-trips response header. A contract test asserts the count on the Postgres targets.
  • Re-run bench at c=1 and c=8 against the deployed Worker with placement set, from the same vantage point as research/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*.toml matches both files, and wrangler deploy --dry-run accepts 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_trips passes on native-pg and worker-cf, and it fails against a mutant that issues one extra statement per returned row. Add the mutant to scripts/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

Ngôn ngữ chính
Rust
Star
0
Fork
0
Merge trung bình
1 giờ 35 phút
Pull request đã merge (30 ngày)
67

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của aRustyDev/thrust

Tất cả issue của aRustyDev/thrust

Issue tương tự

Thêm issue về Rust

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.