Skip to content

refactor(submitqueue): request projection cleanup - remove queue-based request projection table and all usage - #801

Open
mnoah1 wants to merge 1 commit into
mainfrom
mnoah1/submitqueue-list-projection-cleanup
Open

mnoah1 wants to merge 1 commit into
mainfrom
mnoah1/submitqueue-list-projection-cleanup

Conversation

@mnoah1

@mnoah1 mnoah1 commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Intent:

Changes:

  • Remove queue-summary writes, the duplicate entity/store, and obsolete tests and mocks.
  • Idempotently ensure URI mappings before the receipt key, including partial-write retries and stale logs.
  • Document the final read model and general table-retirement guidance; retain the legacy SQL definition for deployment compatibility.

Test Plan

Revert Plan

Revert to the receipt-based reader with legacy writes. Restoring the old List reader also requires restoring its writers and reconciling missed data.


Generated by the 🪄 pr-create skill in devexp-agent-marketplace

Issue Links

None — no separate ticket supplied for this stacked follow-up.

Stack

  1. feat(submitqueue): request projection cleanup - write to timestamp-based lookup table #799
  2. feat(submitqueue): request projection cleanup - get requests list by timestamp and then get request_summary rows #800
  3. @ refactor(submitqueue): request projection cleanup - remove queue-based request projection table and all usage #801

@mnoah1
mnoah1 added this pull request to stack #803 October 7, 2026 17:35
@mnoah1 mnoah1 changed the title refactor(submitqueue): remove duplicate List projection refactor(submitqueue): request projection cleanup - remove queue-based request projection table and all usage Oct 7, 2026
@mnoah1
mnoah1 marked this pull request as ready for review October 7, 2026 17:58
@mnoah1
mnoah1 requested review from a team, behinddwalls and sbalabanov as code owners October 7, 2026 17:58
@mnoah1
mnoah1 force-pushed the mnoah1/submitqueue-list-projection-cleanup branch 2 times, most recently from 1ce24e4 to 8c85cdc Compare October 7, 2026 18:05
@mnoah1
mnoah1 force-pushed the mnoah1/submitqueue-list-projection-cleanup branch from 8c85cdc to 9a574eb Compare October 7, 2026 19:46
Tmwakalasya pushed a commit to Tmwakalasya/submitqueue that referenced this pull request Oct 7, 2026
…sed lookup table (uber#799)

## Summary
First step toward keeping one full request projection in
request_summary, with a small time-based lookup instead of duplicating
lifecycle data for List. All required response data and receipt time are
already captured.

### Changes

- Add request_receipt with only (queue, received_at_ms, request_id), its
immutable storage contract, and gateway wiring.
- Ensure receipt keys after public projection writes, including
unchanged/stale-log retries. Keep accepting receipts hidden and surface
partial-write failures for existing retry handling.
- Keep List reads and the existing queue-summary projection writes in
place for a safe cutover.
- Add storage, materializer, and integration coverage.

### Migration plan

#### Rollout from this PR (CD)

CD deploys the additive request_receipt table and gateway
receipt-store/materializer changes, with the table available before
receipt writes begin. Public request projections populate receipt keys
alongside the existing queue-summary projection. List reads remain
unchanged.

#### Next

1. Next PR will switch List to scan receipt keys and point-read
request_summary. Preserve the API, time bounds, ordering, and page
tokens; check page latency and retain old projection writes during the
rollback window.
2. Once cutover is stable, land last PR in the stack: stop duplicate
projection writes, remove RequestQueueSummary and its store/mapper, and
retire request_summary_by_queue after the rollback window.


## Test Plan
After rollout, confirm newly public requests have matching receipt keys
while List continues using the existing projection.

## Revert Plan
Revert the writer rollout; List still uses the existing projection.
Leave the additive table in place until no writers depend on it.

## API Changes
No RPC/proto changes. Gateway storage implementations must provide the
new RequestReceiptStore accessor.

## Issue Links
LINEAR-CODEM-561 —
https://linear.app/uber/issue/CODEM-561/clean-up-duplicate-request-projection-in-submitqueue-code

## Stack
1. @ uber#799
1. uber#800
1. uber#801
@behinddwalls
behinddwalls added this pull request to the merge queue Oct 8, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 8, 2026
Base automatically changed from mnoah1/submitqueue-list-read-cutover to main October 8, 2026 03:04
Summary:
Intent:
- Complete the receipt-based List migration from #800: keep one authoritative request summary and immutable lookup keys.

Changes:
- Remove queue-summary writes, the duplicate entity/store, and obsolete tests and mocks.
- Idempotently ensure URI mappings before the receipt key, including partial-write retries and stale logs.
- Update rollout docs; retain the legacy SQL definition for deployment compatibility.

Test Plan:
- Deploy after #800 is stable. Rollback must retain the receipt-based reader once duplicate writes stop.
- Retire the table in a separate internal schema change after old binaries and the rollback window are gone. UQL DEPRECATED can drop immediately in Vitess; no physical retirement is enabled here.

---

<sub>Generated by the 🪄 [pr-create](https://sg.uberinternal.com/code.uber.internal/uber-code/devexp-agent-marketplace/-/blob/claude-code/plugins/dev/uber-dev/skills/pr-create/SKILL.md) skill in devexp-agent-marketplace</sub>
@behinddwalls
behinddwalls force-pushed the mnoah1/submitqueue-list-projection-cleanup branch from 9a574eb to 6bbbb33 Compare October 8, 2026 03:04

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants