Remove old buildsets

Buildsets contain references to the dependent items at the time
they were created.  If an item is re-enqueued due to reconfiguration,
(or any other circumstance about the item's position in the pipeline
changes), a new buildset will be created, and the item updated.  Old
buildsets are kept around as an attribute of the item.

The layout is an attribute of the item, and during reconfiguration,
all items currently in pipelines are updated, so we won't have stale
layouts on these items.  However, previous build sets may have
lists of dependent items which, if they are no longer currently in
a pipeline, will not have been updated.  Old build sets may have much
longer lists of dependent items than the current build set.  In fact,
with the right timing for adding new entries to a dependent pipeline
and reconfigurations, an infinite chain of overlapping dependent item
lists could be constructed.

By dropping references to previous buildsets, we can drop references
to old layouts sooner because the dependent items list on current
build sets should generally not grow without bound, and only contain
a moderate number of references to items no longer in pipelines.

An idea for a future change would be to look into whether the dependent
items list could be deleted sooner, or the cost of maintining it
reduced.

Change-Id: I958e1feabda24ae61d66f6b4dc36442c6d0a606b
1 file changed