From c7d8640e30f9d0d9063ff5fcedfb0183174d7e6c Mon Sep 17 00:00:00 2001 From: John Keiser Date: Fri, 9 Aug 2013 21:13:46 -0700 Subject: Invalidate "children" caches when children are added --- lib/chef/chef_fs/file_system.rb | 5 ----- .../chef_fs/file_system/chef_repository_file_system_root_dir.rb | 2 +- lib/chef/chef_fs/file_system/cookbooks_dir.rb | 1 + lib/chef/chef_fs/file_system/data_bags_dir.rb | 1 + lib/chef/chef_fs/file_system/file_system_entry.rb | 9 +++++---- lib/chef/chef_fs/file_system/multiplexed_dir.rb | 1 + lib/chef/chef_fs/file_system/rest_list_dir.rb | 2 ++ 7 files changed, 11 insertions(+), 10 deletions(-) (limited to 'lib/chef') diff --git a/lib/chef/chef_fs/file_system.rb b/lib/chef/chef_fs/file_system.rb index e3c5c05077..f2478c4680 100644 --- a/lib/chef/chef_fs/file_system.rb +++ b/lib/chef/chef_fs/file_system.rb @@ -143,11 +143,6 @@ class Chef found_result = true new_dest_parent = get_or_create_parent(dest, options, ui, format_path) child_error = copy_entries(src, dest, new_dest_parent, recurse_depth, options, ui, format_path) - # Create the internal representation of the fact that the parent will now exist - if !new_dest_parent.nil? and !new_dest_parent.parent.nil? and\ - !new_dest_parent.parent.children.include? new_dest_parent - new_dest_parent.parent.children << new_dest_parent - end error ||= child_error end if !found_result && pattern.exact_path diff --git a/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb b/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb index 6396e031e1..61b3cfb5c7 100644 --- a/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +++ b/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb @@ -54,7 +54,7 @@ class Chef Dir.mkdir(path) end child = make_child_entry(name) - @children << child + @children = nil child end diff --git a/lib/chef/chef_fs/file_system/cookbooks_dir.rb b/lib/chef/chef_fs/file_system/cookbooks_dir.rb index c6af933290..0a1e01c93b 100644 --- a/lib/chef/chef_fs/file_system/cookbooks_dir.rb +++ b/lib/chef/chef_fs/file_system/cookbooks_dir.rb @@ -63,6 +63,7 @@ class Chef end def create_child_from(other, options = {}) + @children = nil upload_cookbook_from(other, options) end diff --git a/lib/chef/chef_fs/file_system/data_bags_dir.rb b/lib/chef/chef_fs/file_system/data_bags_dir.rb index 46c3c21cf6..d0404c284b 100644 --- a/lib/chef/chef_fs/file_system/data_bags_dir.rb +++ b/lib/chef/chef_fs/file_system/data_bags_dir.rb @@ -64,6 +64,7 @@ class Chef raise Chef::ChefFS::FileSystem::OperationFailedError.new(:create_child, self, e), "HTTP error creating child '#{name}': #{e}" end end + @children = nil DataBagDir.new(name, self, true) end end diff --git a/lib/chef/chef_fs/file_system/file_system_entry.rb b/lib/chef/chef_fs/file_system/file_system_entry.rb index c9df58ceda..8b6549a664 100644 --- a/lib/chef/chef_fs/file_system/file_system_entry.rb +++ b/lib/chef/chef_fs/file_system/file_system_entry.rb @@ -47,13 +47,14 @@ class Chef end def create_child(child_name, file_contents=nil) - result = FileSystemEntry.new(child_name, self) + child = FileSystemEntry.new(child_name, self) if file_contents - result.write(file_contents) + child.write(file_contents) else - Dir.mkdir(result.file_path) + Dir.mkdir(child.file_path) end - result + @children = nil + child end def dir? diff --git a/lib/chef/chef_fs/file_system/multiplexed_dir.rb b/lib/chef/chef_fs/file_system/multiplexed_dir.rb index a7a901e304..01d8bfe7f2 100644 --- a/lib/chef/chef_fs/file_system/multiplexed_dir.rb +++ b/lib/chef/chef_fs/file_system/multiplexed_dir.rb @@ -40,6 +40,7 @@ class Chef end def create_child(name, file_contents = nil) + @children = nil write_dir.create_child(name, file_contents) end end diff --git a/lib/chef/chef_fs/file_system/rest_list_dir.rb b/lib/chef/chef_fs/file_system/rest_list_dir.rb index 594fec8ab6..7e4a33813b 100644 --- a/lib/chef/chef_fs/file_system/rest_list_dir.rb +++ b/lib/chef/chef_fs/file_system/rest_list_dir.rb @@ -89,6 +89,8 @@ class Chef end end + @children = nil + result end -- cgit v1.2.1