diff options
author | Luke Kanies <luke@madstop.com> | 2008-11-14 19:15:37 -0600 |
---|---|---|
committer | Luke Kanies <luke@madstop.com> | 2008-11-15 02:25:47 -0600 |
commit | a8d9976d0a11c4dc50b2ef49c63f3f745cb4eccb (patch) | |
tree | efcbed81569954f135dacc4df11f7988f383e621 | |
parent | 8b0843913c4c4ef063c3f1fb1fec674406bc193d (diff) | |
download | puppet-a8d9976d0a11c4dc50b2ef49c63f3f745cb4eccb.tar.gz puppet-a8d9976d0a11c4dc50b2ef49c63f3f745cb4eccb.tar.xz puppet-a8d9976d0a11c4dc50b2ef49c63f3f745cb4eccb.zip |
Catalogs always consider resource data to be expired if not mid-transaction.
This way we'll cache when in a transaction, but otherwise always
hit the disk so the data is fresh. This works because we
really only use resources mid-transaction, but it behaves correctly
if we happen to use a resource outside of a transaction.
Signed-off-by: Luke Kanies <luke@madstop.com>
-rw-r--r-- | lib/puppet/node/catalog.rb | 8 | ||||
-rwxr-xr-x | spec/unit/node/catalog.rb | 11 | ||||
-rwxr-xr-x | spec/unit/type/file.rb | 4 |
3 files changed, 22 insertions, 1 deletions
diff --git a/lib/puppet/node/catalog.rb b/lib/puppet/node/catalog.rb index a438a4764..e82e63444 100644 --- a/lib/puppet/node/catalog.rb +++ b/lib/puppet/node/catalog.rb @@ -183,6 +183,14 @@ class Puppet::Node::Catalog < Puppet::SimpleGraph resource end + def expired?(ts) + if applying? + return super + else + return true + end + end + # Make sure we support the requested extraction format. def extraction_format=(value) unless respond_to?("extract_to_%s" % value) diff --git a/spec/unit/node/catalog.rb b/spec/unit/node/catalog.rb index 3c4da5908..e23c53d3a 100755 --- a/spec/unit/node/catalog.rb +++ b/spec/unit/node/catalog.rb @@ -615,6 +615,17 @@ describe Puppet::Node::Catalog do Puppet::Node::Catalog.ancestors.should be_include(Puppet::Util::Cacher::Expirer) end + it "should always be expired if it's not applying" do + @catalog.expects(:applying?).returns false + @catalog.should be_expired(Time.now) + end + + it "should not be expired if it's applying and the timestamp is late enough" do + @catalog.expire + @catalog.expects(:applying?).returns true + @catalog.should_not be_expired(Time.now) + end + describe "when applying" do it "should create and evaluate a transaction" do @transaction.expects(:evaluate) diff --git a/spec/unit/type/file.rb b/spec/unit/type/file.rb index 6fd27d75b..45f9689a3 100755 --- a/spec/unit/type/file.rb +++ b/spec/unit/type/file.rb @@ -164,13 +164,15 @@ describe Puppet::Type.type(:file) do @resource.stat.should == "mystat" end - it "should cache the stat instance if it has a catalog" do + it "should cache the stat instance if it has a catalog and is applying" do stat = mock 'stat' File.expects(:lstat).returns stat catalog = Puppet::Node::Catalog.new @resource.catalog = catalog + catalog.stubs(:applying?).returns true + @resource.stat.should equal(@resource.stat) end end |