Details
-
Bug
-
Status: Resolved
-
Normal
-
Resolution: Fixed
-
None
-
None
-
Froyo
-
2
-
Froyo - 03/10/2021, Froyo - 03/24/2021, Froyo - 04/7/2021
-
Manual Test
-
Bug Fix
-
Changing the value of Puppet's `rich_data` setting at runtime will no longer invalidate the environment cache.
-
Needs Assessment
Description
While doing research on new loader architectures for SERVER-2860, I discovered the following:
In multithreaded mode in Puppetserver, we create a new settings object whenever a Puppet setting changes while a JRuby request is being processed. One example is if a Puppet function in a module calls Puppet[]=. In the process of initializing the new settings object with overrides (for thread safety), we resolve all settings. The rich_data setting clears out the environment cache when resolved.
This means if you are changing any Puppet settings in your catalog, in multithreaded mode environment caching is effectively disabled, because the cache will be invalidated on every compile of the offending environment.
We should find out why the hook is being called in the first place when initializing the threadlocal settings object (we're not altering that setting, and the default hook mode is "on_write_only"), and see if we can avoid it.
Attachments
Issue Links
- relates to
-
SERVER-2860 JRubyInstance borrow timing-out on multithreaded mode
-
- Ready for Review
-