summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2016-12-19 09:55:10 -0800
committerGitHub <noreply@github.com>2016-12-19 09:55:10 -0800
commit2c33a17fef8308f255f339f73a480f296fba32c2 (patch)
treefcdee8e5daa4deaf51fd645a0fb736391503b323
parenta70905ea932e1a5678c910c8495a344b3b0930e0 (diff)
parentc20f0740ce2fce5f3968e9f18a2ac8ac6c9b779f (diff)
downloadchef-2c33a17fef8308f255f339f73a480f296fba32c2.tar.gz
Merge pull request #5648 from chef/ssd/chef-fs-n-squared
[cheffs] Don't iterate parent object on exist? call
-rw-r--r--lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb b/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb
index b8ec5f8524..eb793d5e87 100644
--- a/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb
+++ b/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb
@@ -69,7 +69,14 @@ class Chef
def exists?
if @exists.nil?
begin
- @exists = parent.children.any? { |child| child.api_child_name == api_child_name }
+ rest.get(api_path)
+ @exists = true
+ rescue Net::HTTPServerException => e
+ if e.response.code == "404"
+ @exists = false
+ else
+ raise
+ end
rescue Chef::ChefFS::FileSystem::NotFoundError
@exists = false
end