summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSerdar Sutay <serdar@opscode.com>2014-11-17 08:34:19 -0800
committerSerdar Sutay <serdar@opscode.com>2014-11-17 08:34:19 -0800
commit47618dad386fa26d897a7d13ace80f6511564550 (patch)
treef8a50fae476dc22d6f08d9a3c1c936f31dc2f50d
parent32bf6ef6d329aae0e4c8ea841e26124316186ef7 (diff)
downloadchef-sersut/attr-opt.tar.gz
Safe dup attributes before deep merge for optimizing merge path.sersut/attr-opt
-rw-r--r--lib/chef/node/attribute.rb11
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/chef/node/attribute.rb b/lib/chef/node/attribute.rb
index 1d564a57e4..cccb16cbf9 100644
--- a/lib/chef/node/attribute.rb
+++ b/lib/chef/node/attribute.rb
@@ -474,8 +474,17 @@ class Chef
merge_overrides(path),
apply_path(@automatic, path)
]
+
+ components.map! do |c|
+ begin
+ c.dup
+ rescue TypeError
+ c
+ end
+ end
+
components.inject(nil) do |merged, component|
- Chef::Mixin::DeepMerge.hash_only_merge(merged, component)
+ Chef::Mixin::DeepMerge.hash_only_merge!(merged, component)
end
end