<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -66,6 +66,14 @@ class Puppet::Parser::Resource::Param
     def to_s
         &quot;%s =&gt; %s&quot; % [self.name, self.value]
     end
+
+    def compare(v,db_value)
+      if (v.is_a?(Puppet::Parser::Resource::Reference))
+        return v.to_s == db_value.to_s
+      else
+        return v == db_value
+      end
+    end
     
     def values_to_remove(db_values)
         values = munge_for_rails(value)
@@ -73,7 +81,7 @@ class Puppet::Parser::Resource::Param
         db_values.collect do |db|
             db unless (db.line == line_number &amp;&amp; 
                        values.find { |v| 
-                         v == db.value 
+                         compare(v,db.value)
                        } )
         end.compact
     end
@@ -82,7 +90,7 @@ class Puppet::Parser::Resource::Param
         values = munge_for_rails(value)
         line_number = line_to_i()
         values.collect do |v|
-            v unless db_values.find { |db| (v == db.value &amp;&amp; 
+            v unless db_values.find { |db| (compare(v,db.value) &amp;&amp; 
                                          line_number == db.line) }
         end.compact
     end</diff>
      <filename>lib/puppet/parser/resource/param.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>23840d9ce202d2c2f2bb02c5769ecde8a70180d0</id>
    </parent>
  </parents>
  <author>
    <name>Brice Figureau</name>
    <login>masterzen</login>
    <email>brice@daysofwonder.com</email>
  </author>
  <url>http://github.com/masterzen/puppet/commit/b689c7d828c09e13ea1748d63abcf71ad6625a2e</url>
  <id>b689c7d828c09e13ea1748d63abcf71ad6625a2e</id>
  <committed-date>2008-08-11T01:52:50-07:00</committed-date>
  <authored-date>2008-08-11T01:52:50-07:00</authored-date>
  <message>Fix #1502 - abysmal storeconfig performance - part2

Resource parameters whose values are a resource reference (ie require,
notify...) where always DELETEd/INSERTed because the code comparing
resource reference compared object instances instead of their values
(since Puppet::Parser::Resource::Reference doesn't override == ), leading
to storeconfig performance issues.
The correct fix would have been to define == in Puppet::Parser::Resource::Reference
but that might introduce some side effects I don't know.
Hence, the fix introduces a local compare() method that knows how to
compare Puppet::Parser::Resource::Reference.

Signed-off-by: Brice Figureau &lt;brice-puppet@daysofwonder.com&gt;</message>
  <tree>da4ae003b0a85f56b08c9bd15fb226277d1693d2</tree>
  <committer>
    <name>Brice Figureau</name>
    <login>masterzen</login>
    <email>brice@daysofwonder.com</email>
  </committer>
</commit>
