Also, lock-elements are only reclaimed for use when the lock mangager looks through the bucket which contains them. It would be a better idea to reclaim them as soon as its waiting and lock queues become empty.
Some of the functions in the list class could be made more efficient. We should also probably change our public interface so it would no longer be necessary to pass in the database name when requesting a page lock, upgrade, or unlock.
For the project in general, it would have helped a lot if the os interface had been fixed before we even started coding the lock manager. The uncertainty of how to interface with the OS made design decisions difficult. The dynamic evoultion of the project at the weekly group meetings did work well and made the project exciting.