[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, upstream, updated. 2.6.1rc1-141-gcdb2b90
Markus Roberts
Markus at reality.com
Mon Aug 16 12:48:11 UTC 2010
The following commit has been merged in the upstream branch:
commit 1d494a3104e9794cc09ba27c701ced68a74fa398
Author: Markus Roberts <Markus at reality.com>
Date: Fri Jul 23 08:47:48 2010 -0700
Tweak to fix for #4302--dangling ref to known_resource_types
Since we were clearing the thread variable containing the compiler's reference
to it's environment's known resource types at the start of each compile the
reference remaining at the end of a compilation could never be used and was
thus just garbage that we were arbitrarily retaining.
This patch moves the clearing of the thread var to the _end_ of compilation so
that it's always nil except in the middle of a compile.
This raises an interesting question; should the ref just live on the compiler
object and we could dispense with the thread-var? It might require things that
now only know about the environment to need a ref to the compiler and introduce
other thread issues (e.g. we might just end up needing a :current_compiler
thread variable, for no net gain in simplicity).
diff --git a/lib/puppet/parser/compiler.rb b/lib/puppet/parser/compiler.rb
index 760d5a7..61bb13c 100644
--- a/lib/puppet/parser/compiler.rb
+++ b/lib/puppet/parser/compiler.rb
@@ -15,16 +15,15 @@ class Puppet::Parser::Compiler
include Puppet::Resource::TypeCollectionHelper
def self.compile(node)
- # At the start of a new compile we don't assume anything about
- # known_resouce_types; we'll get these from the environment and
- # cache them in a thread variable for the duration of the
- # compilation.
- Thread.current[:known_resource_types] = nil
new(node).compile.to_resource
rescue => detail
puts detail.backtrace if Puppet[:trace]
raise Puppet::Error, "#{detail} on node #{node.name}"
- end
+ ensure
+ # We get these from the environment and only cache them in a thread
+ # variable for the duration of the compilation.
+ Thread.current[:known_resource_types] = nil
+ end
attr_reader :node, :facts, :collections, :catalog, :node_scope, :resources, :relationships
--
Puppet packaging for Debian
More information about the Pkg-puppet-devel
mailing list