Ordered window starts two full-source reads after a signalling refetch with no unexpressible page end
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 44/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- typescript
- Área
- database, performance, testing
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- TypeScript
- Estrellas
- 4k
- Forks
- 277
- Merge medio
- 1 d 7 h
- PR fusionados (30 d)
- 176
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de TanStack/db
-
`Collection.currentStateAsChanges` JSDoc examples don’t match `CurrentStateAsChangesOptions`Abierto
Dificultad 1/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
OfflineExecutor.dispose() never settles pendingTransactionPromisesQuizá libre de nuevo @Claire-ovo la tomó hace 8 días y no hay ningún pull request abierto. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
TanStack/db#2254 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Two @tanstack/db tests time out under CPU load because a cold module import counts against the 5 s default timeoutPosiblemente ocupada @jp-knj la tomó hace 7 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 52/100
Los mantenedores suelen responder en 1 día
Todos los issues de TanStack/db
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
caprover/caprover-frontend#273 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
ai-driven-dev/framework#1147 ·
Los mantenedores suelen responder en 1 día
-
agent-ui bug p2
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
amd/gaia#6580 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
cybersemics/em#6232 ·
Los mantenedores suelen responder en 1 día