summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet')
-rw-r--r--lib/puppet/util/autoload.rb6
-rw-r--r--lib/puppet/util/autoload/file_cache.rb14
2 files changed, 18 insertions, 2 deletions
diff --git a/lib/puppet/util/autoload.rb b/lib/puppet/util/autoload.rb
index db06ea934..fb15adf92 100644
--- a/lib/puppet/util/autoload.rb
+++ b/lib/puppet/util/autoload.rb
@@ -73,6 +73,8 @@ class Puppet::Util::Autoload
# Load a single plugin by name. We use 'load' here so we can reload a
# given plugin.
def load(name)
+ return false if named_file_missing?(name)
+
path = name.to_s + ".rb"
searchpath.each do |dir|
@@ -92,10 +94,10 @@ class Puppet::Util::Autoload
puts detail.backtrace
end
end
- return false
+ return named_file_is_missing(name)
end
end
- return false
+ return named_file_is_missing(name)
end
# Mark the named object as loaded. Note that this supports unqualified
diff --git a/lib/puppet/util/autoload/file_cache.rb b/lib/puppet/util/autoload/file_cache.rb
index 6de525a8d..12400f620 100644
--- a/lib/puppet/util/autoload/file_cache.rb
+++ b/lib/puppet/util/autoload/file_cache.rb
@@ -79,6 +79,20 @@ module Puppet::Util::Autoload::FileCache
missing_files[path] = Time.now
end
+ def named_file_missing?(name)
+ @named_files ||= {}
+ if time = @named_files[name] and ! data_expired?(time)
+ return true
+ end
+ false
+ end
+
+ def named_file_is_missing(name)
+ @named_files ||= {}
+ @named_files[name] = Time.now
+ false
+ end
+
private
def cached_data?(path, type = nil)