Brice --

> This is a rather complex set of structural changes.  But to understand it
> you
> > really only need to grasp two key sections; the rest is cleanup.
>
> Can you explain for people like me that didn't had time to try to
> understand the patch what it brings, how (roughly) the internals
> changed, and why it was needed?
> That'd be terrific (and in the meantime I promise I'll read the patch).
>

Sure.  Here's a rundown of the "features" that result:

1) Stable ordering.  Changes in the definition or application of a resource
now will not change the ordering of any other pair of resources (apart from
changes that may be forced by new dependencies).  This eliminates post
deployment reordering of resource application; which means that catalogs
that worked in testing should work "the same way" when pushed to production.

2) Sententials.  We're preparing some graphics to make this clearer, but
it's not to bad in words.  Instead of replacing containers with an edge from
each of the content nodes to all of the dependencies (which is a
multiplicative explosion with sibling containers and an exponential one with
nested containers) we replace them with a pair (think of open/close
brackets) which drastically reduces the "edge explosion" with nested
classes, stages, etc.  This caused puppet to suck up all available ram and
peg the cpu on certain loads, and it won't do that anymore.

3) Frontiers.  By dynamically determining the application order and
eliminating the topological sort we enable all sorts of dependency-aware
features (sub-states, external dependencies, eventual parallelism, etc.).
In the process we cleaned up a number of subtle ordering bugs and created
the opportunity for more fixes on future passes.

-- M
-----------------------------------------------------------
When in trouble or in doubt, run in circles,
scream and shout. -- 1920's parody of the
maritime general prudential rule
------------------------------------------------------------

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to puppet-dev@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-dev+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to