A second failed update rollback restores a stale -wal from an earlier failed rollback
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- sqlite, typescript
Línea de trabajo
Empieza con backupDatabases y restoreDatabases en src/updater/index.ts y después lee el paso 5 de src/updater/AGENTS.md sobre el ciclo de vida de la carpeta de backup. Comprueba la cobertura de backup y rollback en las pruebas del updater y ejecuta las pruebas pertinentes. La tarea estará terminada cuando un rollback restaure solo los archivos sidecar que existían cuando se creó el backup de esa actualización, incluso después de un rollback anterior que haya fallado.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
An update whose new daemon fails to start can restore a stale SQLite -wal file next to a newer database, when an earlier update's rollback had also failed.
backupDatabases (src/updater/index.ts:159) creates update-backup with mkdirp and copies only the sidecar files that exist now; it never removes ones already in the folder. restoreDatabases (:172) copies back every sidecar it finds there. The folder is deleted after a good start or a good rollback, so it survives only after a rollback that failed (src/updater/AGENTS.md, step 5). A clean daemon stop leaves no -wal, so the old -wal from that earlier attempt stays in the backup, and the second rollback puts it beside the current state.db. SQLite may then replay or reject a WAL that does not belong to that database, so the restored state can be wrong or the database unreadable.
Steps. (1) An update whose start fails and whose rollback also fails, leaving update-backup with a -wal. (2) A clean stop. (3) A second update whose new daemon fails to start, so it rolls back. The live state.db-wal is now the one from step 1.
Expected. A rollback restores exactly the files that existed when that update's backup was taken.
Possible fix. Empty (or remove) update-backup at the start of backupDatabases.
Found in a code review, checked by hand.
Written by an agent.
- Lenguaje dominante
- TypeScript
- Estrellas
- 535
- Forks
- 21
- Merge medio
- 9 h 26 min
- PR fusionados (30 d)
- 437
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
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 callstackincubator/simlock
-
bug:new
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
callstackincubator/simlock#1229 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
os:windows request:new
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
callstackincubator/simlock#1071 ·
Los mantenedores suelen responder en 1 día
-
Choose iOS slim categories per lease, and re-sync slim-labels.ts with simslim's new mdm categoryAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 45/100
callstackincubator/simlock#1244 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
callstackincubator/simlock#1242 ·
Los mantenedores suelen responder en 1 día
-
A lease's label is its device's window title: lease --labelPosiblemente ocupada @xavi-999 la tomó hoy. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
callstackincubator/simlock#1240 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de callstackincubator/simlock
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
formbricks/formbricks#9918 ·
Los mantenedores suelen responder en 1 día
-
Chat: Resize question overlayAbiertoenhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
thecodacus/pithagoras#364 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
openclimatefix/quartz-frontend#823 ·
Los mantenedores suelen responder en 4 días
-
area:agent-manager community needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
`contacts.create` posts to `/audiences/undefined/contacts` when `audienceId` is undefinedPosiblemente ocupada @RaphaelFakhri la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
resend/resend-node#1176 ·
Los mantenedores suelen responder en 1 día