Skip to content
  • Duncan Coutts's avatar
    Fix the InstallPlan Processing invariant · 21be7d9d
    Duncan Coutts authored
    Previously it required:
      noIntersection processingClosure failedSet
    
    Lets see what it's saying and why it's wrong. Suppose we have P1 and P2
    in the processing set. We have Q that depends on P1 and P2. So the
    processingClosure is {P1,P2,Q}. Now suppose building P1 fails. The
    failedSet is now {P1,Q1}, and the processingSet is {P2}. The
    processingClosure however is {P2,Q}. Thus we have a non-empty
    intersection between the processingClosure and failedSet, namely {Q}.
    
    So clearly it's bogus, but also it's not clear if I was thinking of
    something else that is correct. So we just drop this part of the
    invariant.
    
    This should fix issue #3889.
    21be7d9d