The Puppet Labs Issue Tracker has Moved: https://tickets.puppetlabs.com
https://tickets.puppetlabs.com. See the following page for information on filing tickets with JIRA:
Many-to-many implementation of stages needlessly inefficient
|Assignee:||Nick Lewis||% Done:|
|Affected Puppet version:||2.6.0||Branch:|
Ticket tracking is now hosted in JIRA: https://tickets.puppetlabs.com
Trevor Vaughan reports:
Stages appear, by default, to generate a many-to-many dependency graph. By adding 'pre' and 'post' stages that contain a single item, the graphs are vastly reduced in complexity and we're seeing something like a 3X speedup in graph execution in simple test cases. I've attached a couple of puppet files illustrating the issue with their associated graphs. If the graphs could be auto-reduced to a single point prior to execution automatically, it would be quite helpful.
I believe the savings could be even greater in complex situations. We had discussed addressing this internally by creating a whit (null resource) but the idea apparently did not make it into code. It should be an easy win.
#2 Updated by Markus Roberts over 5 years ago
Just to clarify, I linked the two autorequire tickets due to implicit conceptual collision between the issues discussed on the respective threads on puppet-dev; specifically, those tickets propose expanding / extending the autorequire functionality while Luke’s refactor/master/3691-no_relationship_graph branch, which he suggested as an alternate resolution on the thread for this ticket removes autorequire functionality and it’s not immediately clear (to me at least) how it could be restored in that model.
I think eliminating the second graph as Luke’s branch does is the right idea, and I think representing containment with bracket node as Tervor, Jesse and other have advocated is better than adding edge types. But I’m not yet seeing how either idea can work in actual code. Just adding bracket nodes as an added complication in splice! looks like the easiest, though significantly less efficient. In short, I’m finding myself in agreement with pretty much everyone on the details and with almost no one on the big picture.