# File lib/puppet/transaction.rb, line 464
464:     def prefetch
465:         prefetchers = {}
466:         @catalog.vertices.each do |resource|
467:             if provider = resource.provider and provider.class.respond_to?(:prefetch)
468:                 prefetchers[provider.class] ||= {}
469:                 prefetchers[provider.class][resource.name] = resource
470:             end
471:         end
472: 
473:         # Now call prefetch, passing in the resources so that the provider instances can be replaced.
474:         prefetchers.each do |provider, resources|
475:             Puppet.debug "Prefetching %s resources for %s" % [provider.name, provider.resource_type.name]
476:             begin
477:                 provider.prefetch(resources)
478:             rescue => detail
479:                 if Puppet[:trace]
480:                     puts detail.backtrace
481:                 end
482:                 Puppet.err "Could not prefetch %s provider '%s': %s" % [provider.resource_type.name, provider.name, detail]
483:             end
484:         end
485:     end