# File lib/puppet/node/environment.rb, line 74 74: def known_resource_types 75: # This makes use of short circuit evaluation to get the right thread-safe 76: # per environment semantics with an efficient most common cases; we almost 77: # always just return our thread's known-resource types. Only at the start 78: # of a compilation (after our thread var has been set to nil) or when the 79: # environment has changed do we delve deeper. 80: Thread.current[:known_resource_types] = nil if (krt = Thread.current[:known_resource_types]) && krt.environment != self 81: Thread.current[:known_resource_types] ||= synchronize { 82: if @known_resource_types.nil? or @known_resource_types.stale? 83: @known_resource_types = Puppet::Resource::TypeCollection.new(self) 84: @known_resource_types.perform_initial_import 85: end 86: @known_resource_types 87: } 88: end