Details
-
Bug
-
Status: Closed
-
Critical
-
Resolution: Fixed
-
PUP 4.10.2
-
None
-
None
-
Agent
-
2
-
Agent 2017-06-28
-
Needs Assessment
-
No Action
Description
Some of our Puppet users did upgrade to the newest Puppet agent version 4.10.2 and have failing Puppet runs when one of their custom Facts contain an ampersand character.
Facter itself does return the custom fact correctly.
Everything works with Puppet agent version 4.10.1
Steps to reproduce:
$ puppet --version
|
4.10.2
|
$ cat > /etc/facter/facts.d/foo.yaml
|
---
|
fact: "foo & bar"
|
$ facter --version
|
3.6.5 (commit f1dd8bb97a2a5254093862bc0168a464e72f135a)
|
$ facter fact
|
foo & bar
|
Puppet agent output:
Info: Retrieving pluginfacts
|
Info: Retrieving plugin
|
Info: Loading facts
|
Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Could not intern from pson: expected value in object at '"foo '!
|
Warning: Not using cache on failed catalog
|
Error: Could not retrieve catalog; skipping run
|
We suspect the bug could originate from this commit:
https://github.com/puppetlabs/puppet/commit/fb99479df8dcc07f19cc9c2bff6b5c79dbcc1f
which changed the way the Facter fact values where formated into pson.
Puppetserver log:
2017-06-14 12:32:44,356 ERROR [qtp1802912927-72] [puppetserver] Puppet Server Error: Could not intern from pson: expected value in object at '"foo '!
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/external/pson/pure/parser.rb:292:in `parse_object'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/external/pson/pure/parser.rb:225:in `parse_value'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/external/pson/pure/parser.rb:280:in `parse_object'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/external/pson/pure/parser.rb:92:in `parse'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/external/pson/common.rb:121:in `parse'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/formats.rb:89:in `intern'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/format_support.rb:12:in `convert_from'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:30:in `extract_facts_from_request'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:23:in `extract_facts_from_request'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/catalog/compiler.rb:50:in `find'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/indirector/indirection.rb:194:in `find'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:121:in `do_find'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:48:in `call'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/context.rb:65:in `override'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb:306:in `override'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/api/indirected_routes.rb:47:in `call'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:82:in `process'
|
org/jruby/RubyArray.java:1613:in `each'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:81:in `process'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:87:in `process'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/route.rb:87:in `process'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:60:in `process'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler/around_profiler.rb:58:in `profile'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/profiler.rb:51:in `profile'
|
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/network/http/handler.rb:58:in `process'
|
file:/opt/puppetlabs/server/apps/puppetserver/puppet-server-release.jar!/puppetserver-lib/puppet/server/master.rb:42:in `handleRequest'
|
Puppet$$Server$$Master_1215734539.gen:13:in `handleRequest'
|
request_handler_core.clj:273:in `invoke'
|
jruby_request.clj:46:in `invoke'
|
jruby_request.clj:31:in `invoke'
|
request_handler_service.clj:34:in `handle_request'
|
request_handler.clj:3:in `invoke'
|
request_handler.clj:3:in `invoke'
|
core.clj:2515:in `invoke'
|
ring_middleware.clj:284:in `invoke'
|
core.clj:168:in `invoke'
|
core.clj:211:in `invoke'
|
core.clj:45:in `invoke'
|
core.clj:343:in `invoke'
|
core.clj:51:in `invoke'
|
ringutils.clj:83:in `invoke'
|
master_core.clj:428:in `invoke'
|
ring.clj:21:in `invoke'
|
ring.clj:12:in `invoke'
|
comidi.clj:249:in `invoke'
|
jetty9_core.clj:424:in `invoke'
|
normalized_uri_helpers.clj:80:in `invoke'
|