The Puppet Labs Issue Tracker has Moved: https://tickets.puppetlabs.com
https://tickets.puppetlabs.com. See the following page for information on filing tickets with JIRA:
Handling of Known Resource Types data in the environment is nasty...
|Affected Puppet version:||2.6.0||Branch:|
Ticket tracking is now hosted in JIRA: https://tickets.puppetlabs.com
The root cause of #5318 is that we handle the set of known resource types for an environment very strangely in our compiler. Specifically, we treat it as a kind of magic global that is always accessed through the environment, which then uses thread local caching, cache invalidation in random other functions, and other tricks to try and make it a per-thread semi-local variable.
A much better solution would be to capture that state at the start of the compile run, then pass it through local state to the places that consume it. This gives the same benefits without the complexity of managing a quasi-global value. It would mean that loading could always check for an update to the manifests and reparse, that memory use was better managed, that we have no thread-model dependencies, so behave the same on all application containers, and generally kill complicated code.
(We also have another thread local cache next to this in the compiler, which probably needs the same treatment, but has far fewer tentacles floating around.)