This is a multi-part MIME message sent by reportbug.
Package: puppetserver
Version: 7.9.5-2
Severity: normal
Tags: l10n upstream
Dear Maintainer(s),
after upgrading from puppet-master to puppetserver, we noticed that
Puppet runs on certain agents did not terminate anymore and left a Java
process on the Puppet server which was using ~100% of one CPU core.
After some debugging and a few detours, I noticed that this seems to be ultimately caused by a bug(?) in JRuby (I've reported this to the JRuby upstream at [1] already) which is triggered by Puppet Server when the
system locale is set to one of at least some locales other than
C/English (via /etc/default/locale) - which is de_CH.UTF-8 in our case.
I'm also attaching a small archive with a Puppet module which can be
used to trigger this issue - in short, a 'file' resource which
recursively copies a structure containing a directory and a symbolic
link to this directory results in an open() on the directory followed by
a read() in the Puppet Server code which never returns, but apparently
loops endlessly somewhere (Puppet Server seems to expect it to throw an exception in this case if I'm interpreting its logic correctly).
My solution for this problem was the addition of a 'LANG="C"' line to /etc/default/puppetserver and restarting it to ensure that Puppet Server
always runs with a defined locale that doesn't make it trigger the
problematic JRuby behavior. Afterwards, the Puppet agent runs terminated
again and were successful.
I'm not sure if this is the right place to report or fix this issue, but
until this gets fixed in JRuby (if it even is fixable with a reasonable
amount of effort), applying a workaround in the Debian package's debian/puppetserver.default or debian/puppetserver.service might prevent
others from running into the same issue when using the packages from
Debian.
Cheers,
Manfred
[1]
https://github.com/jruby/jruby/issues/8096
-- System Information:
Debian Release: 12.4
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 'stable')
Architecture: amd64 (x86_64)
Kernel: Linux 6.1.0-17-amd64 (SMP w/4 CPU threads; PREEMPT)
Kernel taint flags: TAINT_WARN, TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=de_CH.utf8, LC_CTYPE=de_CH.utf8 (charmap=UTF-8), LANGUAGE not set Shell: /bin/sh linked to /usr/bin/dash
Init: unable to detect
Versions of packages puppetserver depends on:
ii default-jre-headless 2:1.17-74
ii facter 4.3.0-2
ii hiera 3.10.0-1
ii jruby 9.3.9.0+ds-8
ii libclj-time-clojure 0.15.2-2
ii libclj-yaml-clojure 0.7.2-1
ii libclojure-java 1.11.1-2
ii libcomidi-clojure 0.3.2-2
ii libcommons-exec-java 1.3-2
ii libcommons-io-java 2.11.0-2
ii libcommons-lang-java 2.6-10
ii libdropwizard-metrics-java 3.2.6-1
ii libdujour-version-check-clojure 0.2.3-1
ii libjruby-utils-clojure 4.0.3-4
ii libkitchensink-clojure 3.2.1-1
ii libliberator-clojure 0.15.3-1
ii libprismatic-schema-clojure 1.2.0-4
ii libpuppetlabs-http-client-clojure 2.1.1-1
ii libpuppetlabs-i18n-clojure 0.9.2-2
ii libpuppetlabs-ring-middleware-clojure 1.3.1-3
ii libraynes-fs-clojure 1.5.2-1
ii libsemver-clojure 0.3.0-2
ii libshell-utils-clojure 1.0.2-3
ii libslingshot-clojure 0.12.2-3
ii libssl-utils-clojure 3.5.0-2
ii libtrapperkeeper-authorization-clojure 1.0.0-4
ii libtrapperkeeper-clojure 3.2.0-4
ii libtrapperkeeper-comidi-metrics-clojure 0.1.2-2
ii libtrapperkeeper-filesystem-watcher-clojure 1.2.2-3
ii libtrapperkeeper-metrics-clojure 1.5.0-5
ii libtrapperkeeper-scheduler-clojure 1.1.3-7
ii libtrapperkeeper-status-clojure 1.1.1-4
ii libtrapperkeeper-webserver-jetty9-clojure 4.4.1-5
ii libyaml-snake-java 1.33-2
ii puppet-agent 7.23.0-1
ii ruby 1:3.1
ii ruby-deep-merge 1.1.1-2
ii ruby-fast-gettext 2.0.3-2
ii ruby-gettext 3.3.3-2
ii ruby-hocon 1.3.1-2
ii ruby-locale 2.1.3-1
ii ruby-puppet-resource-api 1.8.16-2
ii ruby-puppetserver-ca-cli 2.4.0-4
ii ruby-semantic-puppet 1.0.4-1
ii ruby-text 1.3.1-1
Versions of packages puppetserver recommends:
ii puppet-module-puppetlabs-augeas-core 1.1.2-1
ii puppet-module-puppetlabs-cron-core 1.1.0+dfsg1-1
pn puppet-module-puppetlabs-host-core <none>
pn puppet-module-puppetlabs-mount-core <none>
pn puppet-module-puppetlabs-selinux-core <none>
ii puppet-module-puppetlabs-sshkeys-core 2.3.0-1
puppetserver suggests no packages.
-- no debconf information
H4sIAAAAAAAAA+3Wy06DQBQGYNZ9irNjY5wZrkmNvktDD4YIlMxloabv7gCtaW2sNhk1pv+34DID mQk/c6DWzC+sRbfqm5qNNSIKTnqllONelfnRfi9SWV6oNC8KmURSJWlSRpSHn8opZ+xKE0WdOX/d V/3/VH2Sf9M39nYYAo4xBlycyd+n/SH/tPBNJAPO4VNXnn/Vroyh3VtArwuiuml5OiCKhe0GseuM l1MbEffGaSa6f6B1o7myG/18s+vzp04bHvusdrxvNhunq/mWeHDDwHYphOg2a9eyeR9gvvrOb7eL 7eKvn8x12K//MfWfqP2ji+q/L/xSqSxD/f8Vx/m3Tf8Ufowp/7K84Puf5pmMKPHJPLINP6FDyP8g //mBhy4D317/icxyNf3/larA+gcAAAAAAAAAAAAAAAAAuMQbOOff5gAoAAA=
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)