Hi,
We’ve just launched a new Open OnDemand portal to our users but getting some complaints from users receiving an error
looking at the ondemand-nginx logs we see something is timing out
App 1788706 output: /opt/ood/ondemand/root/usr/share/gems/3.3/ondemand/4.0.6-1/gems/activesupport-7.0.8.5/lib/active_support/core_ext/object.rb:13: warning: bigdecimal was loaded from the standard library, but will no longer be part of the default gems starting from Ruby 3.4.0.
App 1788706 output: You can add bigdecimal to your Gemfile or gemspec to silence this warning.
App 1788706 output: /opt/ood/ondemand/root/usr/share/gems/3.3/ondemand/4.0.6-1/gems/activesupport-7.0.8.5/lib/active_support/notifications.rb:4: warning: mutex_m was loaded from the standard library, but will no longer be part of the default gems starting from Ruby 3.4.0.
App 1788706 output: You can add mutex_m to your Gemfile or gemspec to silence this warning.
[ E 2025-08-13 14:09:16.8008 1788657/T18 age/Cor/App/Implementation.cpp:221 ]: Could not spawn process for application /var/www/ood/apps/sys/dashboard: A timeout occurred while spawning an application process.
Error ID: 7ad23d48
Error details saved to: /tmp/passenger-error-pGwivk.html
[ E 2025-08-13 14:09:16.8045 1788657/T9 age/Cor/Con/CheckoutSession.cpp:284 ]: [Client 1-1] Cannot checkout session because a spawning error occurred. The identifier of the error is 7ad23d48. Please see earlier logs for details about the error
Watching the processes on an attempt to login we see the process stuck doing IO is
ruby /opt/rh/ondemand/root/usr/share/passenger/helper-scripts/rack-loader.rb
I’ve managed to strace the process and there are no obvious error, it just eventually receives a SIGKILL
openat(AT_FDCWD, "/opt/ood/ondemand/root/usr/share/gems/3.3/ondemand/4.0.6-1/gems/ood_appkit-2.1.6/lib/browser/platform/windows_mobile.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/opt/ood/ondemand/root/usr/share/gems/3.3/ondemand/4.0.6-1/gems/redcarpet-3.6.0/lib/browser/platform/windows_mobile.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/opt/ood/ondemand/root/usr/share/gems/3.3/ondemand/4.0.6-1/extensions/x86_64-linux/3.3.0/redcarpet-3.6.0/browser/platform/windows_mobile.rb", O_RDONLY|O_NONBLOCK|O_CLOEXEC) = -1 ENOENT (No such file or directory)
+++ killed by SIGKILL +++
I do notice users home directories, which are on network storage, are also being searched. The timing from the strace output for the open syscalls are significantly longer when searching these than the local gems directories.
GEM_PATH seems to be set without the users home directory (trailing “:” included)
GEM_PATH=/opt/ood/ondemand/root/usr/share/gems/3.3:/opt/ood/ondemand/root/usr/share/gems/3.3/ondemand/4.0.6-1:/opt/ood/ondemand/root/usr/share/gems/3.3/ondemand/4.0.3-1:
But when I look in the HTML error file fro passenger I see the users home directory included
RUBY_VERSION = 3.3.8
RUBY_PLATFORM = x86_64-linux
RUBY_ENGINE = ruby
RubyGems version = 3.5.22
RubyGems paths = ["/opt/ood/ondemand/root/usr/share/gems/3.3", "/opt/ood/ondemand/root/usr/share/gems/3.3/ondemand/4.0.6-1", "/opt/ood/ondemand/root/usr/share/gems/3.3/ondemand/4.0.3-1", "/home/user/.local/share/gem/ruby", "/usr/share/gems", "/usr/local/share/gems"]
Is there a way to exclude this from being searched. Most users don’t have that directory and if they do I don’t think we would want to load any gems from that location anyway.