annexi-strayline / AURA

The AURA Reference Implementation
BSD 3-Clause "New" or "Revised" License
22 stars 0 forks source link

Orphan subunits cause AURA to timeout. #11

Closed Richard-Wai closed 2 years ago

Richard-Wai commented 2 years ago

AURA is designed to be fully parallel, and this means all units are entered independently. When a subunit is entered, it is specifically recognized that the parent might have not yet have been entered, but it is also assumed that this will happen. The problem is that during consolidation of the dependency map (merge phase), subunit dependencies are merged up to the parent. If there is no actual parent in the unit set, an exception is raised. Due to how merge is implemented (as a single thread, basically), this results in the merge operation halting, and the progress tracker getting suck incomplete.

The fix is to ensure that Merge_Subunits_Order.Execute properly captures exceptions and marks the appropriate trackers as failed.

There is also an opportunity for improvement to explicitly detect orphaned subunits. This will still cause an immediate abort (as it should, since this means the compiler will reject them anyways).