| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |\ \ \ \ \ \ \ |
|
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | | |
- previously, Puppet would search $LOAD_PATH and just
load applications in the first $LOAD_PATH to have
the directory puppet/application. Now multiple paths
can contain applications.
|
| | |/ / / / / /
| |/| | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
This patch significantly speeds up reading the body of HTTP requests
from Rack.
Reviewed-by: Markus Roberts <markus@puppetlabs.com>
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
We had a combination of bad logic, and bad testing, and a nasty behaviour of
Mocha <= 0.9.10 that would result in a false pass for one of our tests.
This not only falsely passed, but hid an infinite loop retrying decompression
on an invalid data stream; it could be triggered by anything that sent an HTTP
request with an invalid compressed body, resulting in a livelock.
Paired-with: Jesse Wolfe <jesse@puppetlabs.com>
Signed-off-by: Daniel Pittman <daniel@puppetlabs.com>
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
We deprecated this back in 0.24, so we can eliminate it in the next release.
We ran through our deprecation period full of constant complaints to the
users. Now we just fail.
|
|\ \ \ \ \ \ \ \ |
|
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | | |
The "Solaris 10 9/10 release (Update 9)" update changed the output from
the "zpool status" command, which breaks the zpool provider. The format
basically changed from "vdev" to "vdev-n" (ex: "mirror" to "mirror-0"),
which the current provider doesn't recognize.
This fix changes the way vdev's are checked by the zpool provider, to
support either format.
Reviewed-By: Nick Lewis
|
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | | |
into next"
This reverts commit 448a439f5abc3d51accececb678e9c5f547f7615, reversing
changes made to 06939c51a3f675137b53fac8a521132a4c9cfcbe.
As per discussion in http://projects.puppetlabs.com/issues/5691#note-5
|
|\ \ \ \ \ \ \ \ \ |
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
Here is an attempt to cover with process name probes some of the longest
parts of a puppet agent or master.
Currently:
* node compilation
* individual resource evaluation
* some configurer parts
* individual network requests
Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
This is special feature that changes the process name of the running puppet
entity to display its current activity.
It is disabled by default, and can be enabled by sending the QUIT signal
to the process in question (or calling enable through the code).
This system can work only if some "probes" are integrated in the core puppet
codebase. Since tools to visualize process names have a large refresh time
(ie more than 1s) it only makes sense to track long activities (like compilation,
transaction or file serving).
Those probes are the subject of a subsequent patch.
This system tracks every thread activity and form a strings which will
be used as the process name. Due to the way it is implemented it is
possible that it doesn't work on all platforms (I tested successfully
on osx and linux). On some systems the space available is dependent on
the original size of the full command. That's why if this string is longer
than a 50 characters, the string is scrolled (like stock market tickers).
Note: This is not intended to be a generic instrumentation system. Also, being
block based means that it can reduce performance if the instrumentation
probes are used in tight inner loops.
Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
Ronn doesn't like <param> for some reason.
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
Clarified how to modify the system state with puppet resource,
and reformatted the markdown for compatibility with ronn.
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
Puppet queue had inadequate help, so I added to it while
reformatting for ronn.
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
Forward-porting a fix from 2.6.x to the new help text locations.
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
Markdown changes for compatibility with ronn.
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
Markdown changes for compatibility with ronn.
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
Markdown changes for compatibility with ronn.
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
The actual text was somewhat disarrayed. No ronn fixes in this patch.
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
It's a simple tool, it doesn't need both synopsis and
description. Especially when they're identical.
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
Markdown changes for compatibility with Ronn.
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
The puppet apply help was somewhat lacking, so I edited the content
while making its formatting ronn-compatible.
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
Markdown changes for compatibility with Ronn, in the interest of
better manpages.
|
|\ \ \ \ \ \ \ \ \ \
| | |_|/ / / / / / /
| |/| | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
Conflicts:
lib/puppet/util/zaml.rb
|
| | | | | | | | | | |
|
| |\ \ \ \ \ \ \ \ \
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | | |
* bug/2.6.next/5755-gc-issue:
Fix for #5755 -- making zaml serialization robust over projected objects
|
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | | |
The core problem arose when the fix for #5048 in 31118fe85aca4 introduced a
hook to replace objects dynamically durring serialization so that they could be
projected / rewritten to a different form for backward compatability. The
serialization code assumed that all objects being serialized would remain valid
until the serialization was complete, but nothing retained a copy of the
temporary objects created in the hook.
To resolve this, the serialization layer now maintains a ref to each such object
and clears them (to allow GC) after serialization is complete.
Paired-with: Jesse Wolfe <jesse@puppetlabs.com>
Paired-with: Paul Berry <paul@puppetlabs.com>
|
|\ \ \ \ \ \ \ \ \ \ \ |
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
When the '--graph' option is specified, generate a new 'cycles.dot' file and
report the location of that to the user. This contains only the cycles, in
dot format, allowing a visual representation of the cycle to be obtained
quickly.
This will include up to 10 paths through the cycle in the graph, and only one
in the display to the user, to reduce information overload.
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
A bit of profiling shows that most of the time spent in clustering is spent
trolling around through OpenStruct. Replacing this with a hash or, where
sane, an array for the stack frame in our non-recursive implementations makes
performance significantly faster. (3 seconds to .65 seconds faster.)
I guess those developer niceties do have some cost after all. Better to take
the hit on readability and prefer performance here.
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
This uses a separate hash and array to track the visited path and the seen
vertex data; while that is less efficient than using a single data structure,
it avoids on O(n) operation on the stack to determine if we have previously
visited a vertex.
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
This renames a few cryptic variables to have more human-friendly names, and
aligns a bit of whitespace; there are no functional changes in the code.
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
Rather than reporting the cluster of vertexes in the dependency graph, which
is interesting but not entirely informative, we now calculate and report the
paths through the graph that form cycles.
This returns the most useful information, which is the exact path that the
dependency cycle has, allowing the user to (hopefully) immediately target it
and start to work out why the cycle has formed there.
We strongly prefer short paths through the dependency graph within the cycle,
which should report the most useful loops to target first; extended loops
involving more items will show up later if they are independently created.
We also limit the number of paths reported (default: 10) to avoid overwhelming
the error report with the combinatorial explosion that can easily result
from a large scale cycle. (eg: Package => User => Package or something.)
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
The header at the top of the file is long obsolete; simple_graph.rb is
licensed under the GPLv2 like the rest of puppet. Removed.
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
In order to bypass the limitations of the C stack, which is also the Ruby
stack, we replace the simple and clear recursive Trajan implementation with an
iterative version that uses the heap as the stack.
This is somewhat harder to read, but can now run a 10,000 vertex deep linear
dependency relationship where, previously, 1,250 was about the limit on my
machine.
This should now be bounded by the size of the heap rather than the stack on
all platforms -- though it would be nice to get rid of the magic and return to
the recursive version if Ruby ever follows Perl down the sensible path of
essentially unlimited recursion by writing that code for us in the
interpreter...
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
This implements Tarjan's algorithm for finding strongly connected components
in a directed graph, and leverages that to find cycles.
This allows us to report the minimum set of nodes in each cycle, as well as
reporting each cycle discretely if there are multiple of them.
While this can still produce overwhelming and/or unhelpful output, it
represents a large step forward in delivering useful information when a cycle
is detected.
This presently reports the set of nodes that contain the cycle, in no
particular order, rather than the set of edges connecting those nodes.
Sadly, it also suffers a limitation: the implementation of Tarjan's algorithm
used to find strongly connected components is recursive, so is limited by the
maximum Ruby stack depth to dependency chains less than 1,000 nodes deep.
While this is probably not a limit in practice, it is a nasty limitation, and
other considerations (like Ruby stack consumption across versions) could
trigger this much sooner than is desirable.
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
Split out the reporting from a single line (often with literally hundreds or
thousands of items) into a multi-line report. This is still nasty, but at
least it is easier to use as input to other systems.
This will also auto-join to a single line when sent to targets such as syslog
that do not approve of newlines in messages; this preserves the utility of the
message without needing to lose console utility.
|
| | |_|_|_|_|_|_|_|_|/
| |/| | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | | |
The SimpleGraph class was reporting duplicate data when printing cycles:
Notify[c]Notify[c] => Notify[d]
Notify[a]Notify[a] => Notify[b]
This was caused by throwing the array representation of the edge into a
string, rather than just the relationship data; we only care about the later,
so now we only emit that later and have the correct text in the error.
|
|\ \ \ \ \ \ \ \ \ \ \
| |/ / / / / / / / / /
|/| | | | | | | | | | |
|
| | | | | | | | | | | |
|
| | | | | | | | | | | |
|
| | | | | | | | | | | |
|
| | | | | | | | | | | |
|
| | | | | | | | | | | |
|
| | | | | | | | | | | |
|
| | | | | | | | | | | |
|
| | | | | | | | | | | |
|
| | | | | | | | | | | |
|
| | | | | | | | | | | |
|
| | | | | | | | | | | |
|