Ordered window starts two full-source reads after a signalling refetch with no unexpressible page end
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 44/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- typescript
- Bereich
- database, performance, testing
Rechercherichtung
Start with packages/db/tests/query/ordered-work-oracle.property.test.ts and replay seed 2146201763 using the command in the issue. Trace how the joined ordered window handles the signalling refetch and counts full-source requests; the cause is not diagnosed. Done means the replay passes with zero new full-source requests after the refetch, while preserving the oracle's row and work bounds.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Summary
After one signalling refetch, a joined ordered window with an unindexed source starts two full-source reads. The ordered-work oracle allows none for this history: no page in it ends on a null or NaN rank, so the documented full-source fallback does not apply.
This is a different counterexample from #2221. That one needs a NaN rank, an anti-joined filter, and a descending window, and it exceeds a bound of one. This one has a single row with rank 0, a joined filter, an ascending window, and exceeds a bound of zero.
The failure is on main. A randomized CI campaign found it while testing an unrelated pull request (#2103, which does not change packages/db).
Law
packages/db/tests/query/ordered-work-oracle.property.test.ts, in the eager indexed ordered windows lane: after a signalling refetch, if no page end became unexpressible, the loader starts no new full-source request.
if (signalsRefetch && unexpressiblePageEnds === unexpressibleBefore) {
expect(
fullSourceRequests,
`full-source requests after a signalling refetch at step ${step}`,
).toBe(fullSourceBefore)
}
Reproduce
On main at 7e46f81ad, from packages/db:
TANSTACK_DB_ORACLE_SEED=2146201763 npx vitest run --coverage.enabled=false \
tests/query/ordered-work-oracle.property.test.ts \
-t "eager indexed ordered windows keeps rows and per-change work bounded for a random or replayed seed"
Result, every run:
AssertionError: full-source requests after a signalling refetch at step 1: expected 2 to be +0
Shrunk counterexample:
{"path":"on-demand","provider":"refetch-signal","latency":"immediate","cancellation":"cooperative","peer":false,"filter":"joined","via":"marker","indexed":false,"direction":"asc","nulls":"first","terms":1,"limit":1,"offset":0,"initial":[],"history":[{"type":"upsert","id":0,"rank":0,"eligible":false}]}
The cause is not diagnosed. The seed was first seen in CI job Test (db-1) for #2103 at cb9db1da1, which reproduced the same counterexample.
- Vorherrschende Sprache
- TypeScript
- Sterne
- 4k
- Forks
- 277
- Ø Merge
- 1 T. 7 Std.
- Gemergte PRs (30 T.)
- 170
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus TanStack/db
-
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 88/100
Maintainer antworten meist innerhalb von 1 Tag
-
OfflineExecutor.dispose() never settles pendingTransactionPromisesEvtl. wieder frei @Claire-ovo hat das vor 8 Tagen übernommen, und es ist kein Pull Request offen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
TanStack/db#2254 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
-
Two @tanstack/db tests time out under CPU load because a cold module import counts against the 5 s default timeoutEvtl. vergeben @jp-knj hat das vor 6 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 12/100
TanStack/db#2342 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
Ähnliche Issues
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 85/100
formbricks/formbricks#9918 ·
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
thecodacus/pithagoras#364 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 72/100
openclimatefix/quartz-frontend#823 ·
Maintainer antworten meist innerhalb von 4 Tagen
-
area:agent-manager community needs-triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Maintainer antworten meist innerhalb von 1 Tag
-
`contacts.create` posts to `/audiences/undefined/contacts` when `audienceId` is undefinedEvtl. vergeben @RaphaelFakhri hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
resend/resend-node#1176 ·
Maintainer antworten meist innerhalb von 1 Tag