summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/puppet/provider.rb6
-rw-r--r--lib/puppet/type.rb6
2 files changed, 12 insertions, 0 deletions
diff --git a/lib/puppet/provider.rb b/lib/puppet/provider.rb
index f614eb0e9..f51ea4450 100644
--- a/lib/puppet/provider.rb
+++ b/lib/puppet/provider.rb
@@ -139,6 +139,12 @@ class Puppet::Provider
return true
end
+ # Remove the reference to the model, so GC can clean up.
+ def clear
+ @model = nil
+ end
+
+ # Retrieve a named command.
def command(name)
self.class.command(name)
end
diff --git a/lib/puppet/type.rb b/lib/puppet/type.rb
index a5a8cf966..8f29d79bf 100644
--- a/lib/puppet/type.rb
+++ b/lib/puppet/type.rb
@@ -1262,6 +1262,12 @@ class Type < Puppet::Element
@parent.delete(self)
@parent = nil
end
+
+ # Remove the reference to the provider.
+ if defined? @provider
+ @provider.clear
+ @provider = nil
+ end
end
# Is the named state defined?