Open Diegothx opened 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).
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.
Oka, muchas gracias!
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?