• Bug#1063568: puppetserver: Hangs on systems using at least some non-C/E

    From Manfred Stock@21:1/5 to All on Fri Feb 9 17:30:01 2024
    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)