HomePhorge

(#17458) Partial revert of "don't rebuild regexp every time"
fd92eb14be2bUnpublished

Unpublished Commit ยท Learn More

Repository Importing: This repository is still importing.

Description

(#17458) Partial revert of "don't rebuild regexp every time"

In commit, 20efe94, a change was made to Puppet::Util.absolute_path? to
require the Puppet module only if necessary. This was done as an
optimization since re-requiring a file is much slower than checking if a
constant is defined.

However, defined?(Puppet) is always true when called within the
Puppet::Util.absolute_path? method, so effectively, absolute_path? would
never require the Puppet module, when previously it used to, in certain
exceptional flows.

In the normal flow, it wasn't an issue, because when puppet runs an
internal subcommand (Application), the app requires the Puppet module,
which loads features, which creates an autoloader, which calls the
absolute_path? method. At this point, requiring puppet is not needed.

However, if an external subcommand was specified, e.g. puppet foo,
where puppet-foo is an external executable, or if no subcommand was
specified, e.g. puppet, the CommandLine would attempt to resolve the
external subcommand using Puppet::Util.which, which calls absolute_path?
at a time when the Puppet module and features haven't been loaded,
causing #17458.

Ideally, the exceptional cases should be requiring puppet rather than
relying on the absolute_path? method to do so. However, in 3.x, this
entire logic has been reworked. In 3.x, the default confdir/vardir
locations are solely based on whether we're running as root or not, and
not the application's run_mode setting. As a result, we can and do
require puppet early on.

For 2.7.x, the safest thing is to revert the change in the require
'puppet' behavior.

Details

Provenance
Josh Cooper <josh@puppetlabs.com>Authored on
vanmeeuwenPushed on Jun 2 2015, 2:22 PM
Parents
rPU28229d75339a: Revert "(#17458) Load 'puppet' at the right time"
Branches
Unknown
Tags
Unknown

Event Timeline

Josh Cooper <josh@puppetlabs.com> committed rPUfd92eb14be2b: (#17458) Partial revert of "don't rebuild regexp every time" (authored by Josh Cooper <josh@puppetlabs.com>).Nov 9 2012, 12:01 AM