Details
-
Bug
-
Status: Accepted
-
Normal
-
Resolution: Unresolved
-
PUP 6.15.0
-
None
-
None
-
Night's Watch
-
Needs Assessment
-
Needs Assessment
Description
Puppet Version: 6.20.0
Puppet Server Version: 6.15.0
OS Name/Version: CentOS Linux 7.9
Crafting a parser function file in a particular way causes most future catalog compilations to fail across all environments after the function is executed once, until puppetserver is restarted.
To reproduce, create a file in lib/puppet/parser/functions/bork.rb with the following contents:
module Puppet
module Parser
module Functions
newfunction(
:bork,
type: :rvalue,
doc: 'B0rks the puppetserver'
) do |args|
return true
end
end
end
end
Then have an agent manifest call the `bork()` function.
Observe most future puppet runs fail, even for other nodes in other environments that previously worked before.
The error frequently seen is:
Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Function Call, undefined method `[]' for Puppet::Pops::Loader::RubyLegacyFunctionInstantiator::Puppet:Module
Desired Behavior:
Catalog fails for the invalid parser function, and other catalogs work fine.
Actual Behavior:
Most future catalog compilations fail, even for unrelated nodes in other environments that previously worked before the `bork()` function was called.
The following simple catalog is known to fail, where it previous works:
include stdlib
$test = pick($puppetmaster, $::fqdn)