Open Agustinuv opened 5 months ago
La función flush()
donde el assert falla se ejecuta al terminar el programa, y el objetivo del assert es asegurarse que se dejó de ocupar correctamente todas las páginas que se le pidieron al buffer manager.
Esto pasa porque en alguna parte haces pin y no haces el unpin correspondiente. El pin lo puedes llamar directamente y también se hace automáticamente al hacer buffer_mgr.get_page
y buffer_mgr.append_page
.
Si no añadiste manualmente una llamada a pin()
ni eliminaste el unpin()
de un destructor lo único que se me ocurre que puede pasar es que construyes un objeto que usa una página (IsamNonClusteredLeaf
, IsamNonClusteredDir
o HeapFilePage
) y este objeto no se destruye por un error en tu flujo (por ejemplo llamar a new de uno de esos objetos sin su respectivo delete).
Holaa, no sé por qué cuando corro por primera vez el código (sin datos cargados) pareciera funcionar todo correctamente, insertando e iterando bien. Pero al terminar de iterar sale este error:
Está bien que retorne false, porque la página está fuera del rango, pero no se por qué se cae. Si corro el código de nuevo el error no aparece :(