Fix Remover.have_new_references() to ignore objects missing in storage
We don’t clean up the object_references
table when we remove an
object. Remover.have_new_references()
uses
object_find_recent_references()
to detect if any new references have
been added since we started the removal operation. But stale entries
interfered with this detection.
Therefore we have to filter objects missing from storage when
looking for new references. As this problem also occurs while
determining unremovable objects, we factor out the logic in
swh.alter.utils.get_filtered_objects()
.
Bonus point: we have removed a hard coded limit!
Co-authored with Nicolas Dandrimont.