[Pkg-puppet-devel] Bug#1063568: puppetserver: Hangs on systems using at least some non-C/English locale with certain 'file' resources
Manfred Stock
m-debian at nfred.ch
Fri Feb 9 15:42:59 GMT 2024
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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: freezer.tar.gz
Type: application/gzip
Size: 329 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/pkg-puppet-devel/attachments/20240209/2ab80725/attachment.gz>
More information about the Pkg-puppet-devel
mailing list