DiegoEmilio01 / IIC3413

Repositorio del curso Implementación de Sistemas de Bases de Datos
16 stars 2 forks source link

Bug al inizializar el sistema en recovery_simple_undo #34

Open Diegothx opened 1 month ago

Diegothx commented 1 month ago

Tratando de ejecutar el test me di cuenta de que al correr 'auto system = System::init(db_directory, BufferManager::DEFAULT_BUFFER_SIZE)' se sobrescribe el archivo log existente (IIC3413log.cr) en un archivo vacío. Estoy asumiendo que esto es un bug y no que es como debería funcionar, puesto que si borra los logs no habría logs que recuperar(?

También, cuando hago el recovery debería borrar también de los logs las líneas que se están revirtiendo (los write-u que no han sido commit o abort, junton al start de estas transacciones)? O solo debo restaurar la data de la database?

cirojas commented 1 month ago

lo que yo tenía pensado como solución era leer todo el log antes de la línea

auto system = System::init(db_directory, BufferManager::DEFAULT_BUFFER_SIZE);

y guardar toda la información relevante del log en alguna parte. Luego cierras el archivo y se hace la inicialización del sistema.

Edit: Luego de restaurar la base de datos el log debería quedar vacío. Luego de restaurar el log debe quedar igual para los problemas 1 y 3, y se debe modificar como especifica el enunciado para el problema 2. Yo les recomiendo que para el problema 2 vacíen el log después de leerlo y lo reescriban desde 0.

Era confuso como estaba el archivo src/bin/recovery_simple_undo.cc así que cambié un poco los comentarios (7cf8827).

cirojas commented 1 month ago

Hable con el profesor y me di cuenta que me equivoqué en el comentario anterior, así que hice un cambio (38dc230) para que al iniciar el sistema no se borre el log.

Diegothx commented 1 month ago

Oka, muchas gracias!