[engine] Noop only a cyclic dependency, and not an entire Node

Review Request #3478 - Created Feb. 18, 2016 and submitted

Stu Hood
benjyw, ity, jsirois, kwlzn, patricklaw, peiyu

Rather than failing an entire Node when it attempts to introduce a cyclic dependency, we now fail only the cyclic dependency. To avoid actually introducing cyclic dependencies into the graph, we store them independently, for use by consumers that understand them.

The effect of this change is that rather than immediately failing, the Node that requested the cyclic dependency might still be able to succeed via 1) some other source of the dependency, 2) the dependency being optional.

  • Store cyclic dependencies independently, and provide them to Step rather than immediately failing the requesting Node
  • Delete the StructAddress class, which existed only to work-around the current cycle handling
  • Mark Noops white in the visualizer* (*in cases where they're actually rendered... for example, by passing lambda _: True as the walk predicate)


Stu Hood
Peiyu Wang
Peiyu Wang
Kris Wilson
Stu Hood
Stu Hood
Review request changed

Status: Closed (submitted)

Change Summary:

Merged as 25de32b67abadfe219b446b3ff6df949b5f8d44c