summaryrefslogtreecommitdiff
path: root/lib/chef/chef_fs/file_system
diff options
context:
space:
mode:
authorJohn Keiser <jkeiser@opscode.com>2013-10-15 08:36:35 -0700
committerJohn Keiser <jkeiser@opscode.com>2013-10-15 08:36:35 -0700
commitc6081bbad60e5d81d1db5a5e82cc66d28ec083ec (patch)
treebbc5aefef8b29fe3c7bd523a25e0f52e4cb37794 /lib/chef/chef_fs/file_system
parent59e15c6268d99ed2f97cc39dddf17d844ca63d9b (diff)
downloadchef-c6081bbad60e5d81d1db5a5e82cc66d28ec083ec.tar.gz
Fix issue where multiple threads try to create same directory at the same time
Diffstat (limited to 'lib/chef/chef_fs/file_system')
-rw-r--r--lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb5
-rw-r--r--lib/chef/chef_fs/file_system/file_system_entry.rb5
2 files changed, 8 insertions, 2 deletions
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 eb825d0485..1cfc15d757 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
@@ -51,7 +51,10 @@ class Chef
def create_child(name, file_contents = nil)
child_paths[name].each do |path|
- Dir.mkdir(path)
+ begin
+ Dir.mkdir(path)
+ rescue Errno::EEXIST
+ end
end
child = make_child_entry(name)
@children = nil
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 8b6549a664..e9ece366b5 100644
--- a/lib/chef/chef_fs/file_system/file_system_entry.rb
+++ b/lib/chef/chef_fs/file_system/file_system_entry.rb
@@ -51,7 +51,10 @@ class Chef
if file_contents
child.write(file_contents)
else
- Dir.mkdir(child.file_path)
+ begin
+ Dir.mkdir(child.file_path)
+ rescue Errno::EEXIST
+ end
end
@children = nil
child