From e119b04f7738f5ffb6b9bf353bb28b3d058302a5 Mon Sep 17 00:00:00 2001 From: David Schmitt Date: Thu, 29 Apr 2010 17:32:40 +0200 Subject: Avoid setting the timeout before we know which timeout we should set. Signed-off-by: David Schmitt --- lib/puppet/util/settings.rb | 8 ++++---- spec/unit/util/settings.rb | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/lib/puppet/util/settings.rb b/lib/puppet/util/settings.rb index b2563e996..82d2d4533 100644 --- a/lib/puppet/util/settings.rb +++ b/lib/puppet/util/settings.rb @@ -308,13 +308,13 @@ class Puppet::Util::Settings def parse raise "No :config setting defined; cannot parse unknown config file" unless self[:config] - # Create a timer so that this file will get checked automatically - # and reparsed if necessary. - set_filetimeout_timer() - @sync.synchronize do unsafe_parse(self[:config]) end + + # Create a timer so that this file will get checked automatically + # and reparsed if necessary. + set_filetimeout_timer() end # Unsafely parse the file -- this isn't thread-safe and causes plenty of problems if used directly. diff --git a/spec/unit/util/settings.rb b/spec/unit/util/settings.rb index 24bd04b27..bf0776fc8 100755 --- a/spec/unit/util/settings.rb +++ b/spec/unit/util/settings.rb @@ -512,6 +512,26 @@ describe Puppet::Util::Settings do @settings.parse @settings[:myarg].should == "" end + + describe "and when reading a non-positive filetimeout value from the config file" do + before do + @settings.setdefaults :foo, :filetimeout => [5, "eh"] + + somefile = "/some/file" + text = "[main] + filetimeout = -1 + " + File.expects(:read).with(somefile).returns(text) + @settings[:config] = somefile + end + + it "should not set a timer" do + EventLoop::Timer.expects(:new).never + + @settings.parse + puts "2", @settings[:filetimeout] + end + end end describe "when reparsing its configuration" do -- cgit