-
Notifications
You must be signed in to change notification settings - Fork 13
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Is this a critical security issue?
- This is not a security issue.
Describe the Bug
Seen with agent: openvox-8.24.2
against server: openvox-server-8.12.1
Both with Ruby: ruby-3.4.8
using an empty puppet.conf on agent side, the agent run starts alike:
# puppet agent --test
Info: Refreshing CA certificate
Info: CA certificate is unmodified, using existing CA certificate
Info: Refreshing CRL
Info: CRL is unmodified, using existing CRL
Info: Using environment 'production'
Error: Server Error
Info: Loading facts
...
And on the server side, following exception can be observed in puppetserver.log:
2026-02-10T09:12:40.617+01:00 ERROR [qtp1624652065-63] [puppetserver] Puppet Server Error: Failed to serialize Puppet::FileServing::Metadata for 'plugins': Could not render_multiple to Puppet::Network::Format[json]: undefined method `except' for #<JSON::Ext::Generator::State:0x2fda81>
Did you mean? exec
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/api/indirected_routes.rb:195:in `block in first_response_formatter_for'
org/jruby/RubyEnumerable.java:664:in `find'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/api/indirected_routes.rb:186:in `first_response_formatter_for'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/api/indirected_routes.rb:156:in `do_search'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/api/indirected_routes.rb:54:in `block in call'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/context.rb:64:in `override'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet.rb:292:in `override'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/api/indirected_routes.rb:53:in `call'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/api/server/v3.rb:18:in `block in wrap'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/route.rb:85:in `block in process'
org/jruby/RubyArray.java:2009:in `each'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/route.rb:84:in `process'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/route.rb:91:in `process'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/route.rb:91:in `process'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/handler.rb:88:in `block in process'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/handler.rb:71:in `block in with_request_profiling'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/util/profiler/around_profiler.rb:59:in `profile'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/util/profiler.rb:53:in `profile'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/handler.rb:67:in `with_request_profiling'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/handler.rb:87:in `block in process'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/handler.rb:94:in `respond_to_errors'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/handler.rb:86:in `process'
uri:classloader:/puppetserver-lib/puppet/server/master.rb:69:in `block in handleRequest'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/context.rb:64:in `override'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet.rb:292:in `override'
uri:classloader:/puppetserver-lib/puppet/server/master.rb:68:in `handleRequest'
Workaround I found is to use msgpack serialization, so adding the following to the client puppet.conf:
[main]
preferred_serialization_format = msgpack
This requires the msgpack gem installed on the agent, as well as in the server via puppetserver gem install msgpack.
Expected Behavior
The default JSON serialization format should "just work"
Steps to Reproduce
see description above
Environment
OpenBSD recent snapshots with openvox 8.24.2 agent and openvox-server 8.12.1 and openvoxdb packages available
Ruby 3.4.8.
Additional Context
No response
Relevant log output
2026-02-10T09:12:40.617+01:00 ERROR [qtp1624652065-63] [puppetserver] Puppet Server Error: Failed to serialize Puppet::FileServing::Metadata for 'plugins': Could not render_multiple to Puppet::Network::Format[json]: undefined method `except' for #<JSON::Ext::Generator::State:0x2fda81>
Did you mean? exec
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/api/indirected_routes.rb:195:in `block in first_response_formatter_for'
org/jruby/RubyEnumerable.java:664:in `find'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/api/indirected_routes.rb:186:in `first_response_formatter_for'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/api/indirected_routes.rb:156:in `do_search'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/api/indirected_routes.rb:54:in `block in call'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/context.rb:64:in `override'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet.rb:292:in `override'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/api/indirected_routes.rb:53:in `call'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/api/server/v3.rb:18:in `block in wrap'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/route.rb:85:in `block in process'
org/jruby/RubyArray.java:2009:in `each'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/route.rb:84:in `process'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/route.rb:91:in `process'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/route.rb:91:in `process'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/handler.rb:88:in `block in process'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/handler.rb:71:in `block in with_request_profiling'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/util/profiler/around_profiler.rb:59:in `profile'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/util/profiler.rb:53:in `profile'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/handler.rb:67:in `with_request_profiling'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/handler.rb:87:in `block in process'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/handler.rb:94:in `respond_to_errors'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/network/http/handler.rb:86:in `process'
uri:classloader:/puppetserver-lib/puppet/server/master.rb:69:in `block in handleRequest'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet/context.rb:64:in `override'
/var/puppetlabs/puppetserver/data/jruby-gems/gems/openvox-8.24.2/lib/puppet.rb:292:in `override'
uri:classloader:/puppetserver-lib/puppet/server/master.rb:68:in `handleRequest'Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working