Issue #7709 has been updated by Markus Roberts.

I believe the problem description is a little off here; not factually 
incorrect, just framed in a way that is less actionable than it could be.  The 
difference is subtle and much easier to explain at a whiteboard, but I'll give 
it a shot here.

The behavior we're seeing is the consequence of two changes.  One part was 
intentional and the other is an unintended side effect of a change which 
cleaned up log messages by removing duplication/confusing information.  This 
second change had the unintended consequence of giving pairs of node in the 
graph the same name, causing them to by "unified" into one node when then graph 
was produced.

The change in question was:

    --- a/lib/puppet/type/whit.rb
    +++ b/lib/puppet/type/whit.rb
    @@ -5,8 +5,14 @@ Puppet::Type.newtype(:whit) do
    desc "The name of the whit, because it must have one."
    end
    +
    +  # Hide the fact that we're a whit from logs
    def to_s
    -    "(#{name})"
    +    name.sub(/^completed_|^admissible_/, "")
    +  end
    +
    +  def path
    +    to_s
    end
    def refresh
    
from 5c245418115396df655f86065d2d1d3af62e39ee and the proper fix is probably to 
move the name-simplification somewhere where it will only affect the log 
messages and not other things (such as the graphs).

As for the first (intentional) part, the key thing to realize is that neither 
the old or the new graph contains containment edges per se, but both contain 
additional dependency edges induced by the containment edges (this is the 
subtlety I mentioned above).  In the old code would take a two containers full 
of resources with a dependency between the containers:

    ( x x x x x ) --> ( o o o o o o )

and induce a K(n,m) graph of dependencies between them:

              x x x x x
          // a rats nest of arrows
          // connecting each x
          // to each o (30 in all)
             o o o o o o 

but now we introduce sentinels (which act like cable ties) to reduce this 
complexity:

                      start_A
                // one edge from start_A to each x
                     x x x x x
                // one edge from each x to A_done
                      A_done
                         |
                         V
                      start_B
                // one edge from start_B to each o
                     o o o o o o
                // one edge from each o to B_done
                      B_done

in this case it reduces 30 edges to 22, but in large graphs the savings is 
considerably greater.

The code above, however, apparently causes both the opening and closing 
sentinels to be given the same name (that of the container that they were 
induced by) which makes the logs prettier but visually "joins" the entry and 
exit nodes in a way that appears to represent loops.
----------------------------------------
Bug #7709: expanded_relationship.dot should not have both containment and 
relationship edges
https://projects.puppetlabs.com/issues/7709

Author: Jeff McCune
Status: Unreviewed
Priority: Normal
Assignee: 
Category: 
Target version: 
Affected Puppet version: 2.7.0rc1
Keywords: cycle graph containment edge relationship frontier
Branch: 


# Overview #

Running against master (2.7.0rc3-135-g520cbc0) I notice that using --graph has 
obvious cycles in the graph when the catalog itself does not actually have 
cycles and applies cleanly.

Please see the attached screenshot.

Talking with Daniel, the suspicion is that the graphing output is not drawing a 
distinction between containment edges and relationship edges and is displaying 
both in the graph output.

# Desired Behavior #

The graph output should only display relationship edges between resources as it 
does with Puppet 2.6 and earlier.

# Actual Behavior #

Visible cycles are displayed in the graph output when there are no relationship 
edge cycles.

# Steps to reproduce #

A simple catalog should show some resources looping against themselves.  I can 
provide example manifests upon request.




-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://projects.puppetlabs.com/my/account

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Bugs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-bugs?hl=en.

Reply via email to