Requests during a table's DELETING window answer differently from DynamoDB
Los mantenedores suelen responder en 4 días
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
Línea de trabajo
Start with crates/storage-postgres/src/delete_table.rs and update_table.rs, then trace the data-plane table lookup that excludes DELETING rows. Compare the PostgreSQL behavior with the DynamoDB responses listed for the four requests; the other backends are unmeasured. Done means the control-plane requests return the stated service error and the data-plane behavior during deletion is decided and matches the service.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
While a table is DELETING, ExtendDB answers four requests differently from DynamoDB. The service reports the window as a table that is still there and in use; ExtendDB reports it as a table that does not exist, or with a different sentence.
Measured on the service 2026-10-24 09:30 UTC (two repeats, identical) and on ExtendDB with the PostgreSQL backend at main 744ea291 and on #504, with the window held open by an ACCESS SHARE lock on the table's data table. The other backends are not measured here.
| Request during the window | ExtendDB | DynamoDB |
|---|---|---|
second DeleteTable |
400 ResourceNotFoundException Requested resource not found |
400 ResourceInUseException Attempt to change a resource which is still in use: Table is being deleted: <name> |
UpdateTable (any member) |
400 ResourceInUseException Table <name> is not in ACTIVE state |
400 ResourceInUseException Attempt to change a resource which is still in use: Table is being deleted: <name> |
PutItem |
400 ResourceNotFoundException |
200 |
GetItem |
400 ResourceNotFoundException |
200 with the item |
DescribeTable (TableStatus DELETING) and CreateTable with the name (ResourceInUseException Table already exists: <name>) match the service.
Cause
crates/storage-postgres/src/delete_table.rs selects the row WHERE ... table_status IN ('ACTIVE', 'CREATING'), so a DELETING row reads as TableNotFound. update_table.rs locks the row and answers TableNotActive for any status other than ACTIVE, which the engine words as Table <name> is not in ACTIVE state. The data-plane table lookup excludes DELETING rows, so reads and writes answer ResourceNotFoundException until the row is gone.
Fix shape
For the two control-plane requests, look the name up without the status filter when the filtered select returns nothing and answer a DELETING row with the service's sentence; delete_table.rs already does this for a table that is being restored. For the data plane, the service serves reads and writes until the table is gone, so the lookup would include DELETING rows; whether writes during the window should be served or refused is a design question, since a write that lands between the data drop and the row delete is lost on both sides.
With the default delete delay the window on ExtendDB lasts as long as the data drop takes, so a client only sees it when another connection holds a lock on the table's data.
Found while fixing #449 (#504).
- Lenguaje dominante
- Rust
- Estrellas
- 517
- Forks
- 60
- Merge medio
- 4 d 22 h
- PR fusionados (30 d)
- 40
Preparar el entorno
- Incluye un Dockerfile o un 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 ExtendDB/extenddb
-
extenddb version prints the first build's commit after a rebuild in the same target directoryAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 4 días
-
Launch-prep: scope statement + backend tiers + version policyPosiblemente ocupada @navareamol la tomó hoy. Abierto
Dificultad 2/5 3-5 días Aptitud para principiantes 65/100
ExtendDB/extenddb#662 · 1 asignado ·
Los mantenedores suelen responder en 4 días
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
ExtendDB/extenddb#658 · 1 comentario ·
Los mantenedores suelen responder en 4 días
-
backend:postgresql bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 4 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 4 días
Todos los issues de ExtendDB/extenddb
Issues similares
-
good first issue help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
servo/rust-smallvec#827 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
nowledge-co/hawdb#1400 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
calcit-lang/caps#16 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
penso/herdr-gpui#934 ·
Los mantenedores suelen responder en 1 día
-
🎉 Add BossanovaAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
jaywcjlove/awesome-mac#4096 ·
Los mantenedores suelen responder en 1 día