Your message dated Mon, 12 Jan 2026 14:49:24 -0700
with message-id <6090296.ejJDZkT8p0@soren-desktop>
and subject line redmine plugins symlinked in REDMINE_INSTANCE/plugins have
their files loaded twice
has caused the Debian Bug report #1120904,
regarding redmine plugins symlinked in REDMINE_INSTANCE/plugins have their
files loaded twice
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
1120904: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1120904
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: redmine
Version: 6.0.5+ds-1
Severity: normal
Dear Maintainer,
This is likely a local issue but in case it is not I open this report.
As reported in https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1120894
when I symlinks my /usr/share/redmine/plugins/<x> (not
/usr/share/redmine/plugins folder
but the plugin folders inside) into /var/lib/redmine/default/plugins (ie
REDMINE_INSTANCE/plugins)
their files are loaded twice and as on is a derivative of Rails Concern it
aborts loadig the redmine
app (tested in unicorn with a working_direcoty set to /usr/share/redmine. Also
tested with rackup from /usr/share/redmine)
I fixed /usr/share/redmine/instances which now is a symlink to /var/lib/redmine
as it is supposed to.
when I symlink additionals and redmine_git_hosting plugins from
/usr/share/redmine/plugins/<x>
to /var/libredmine/default/plugins, restarting unicorn redmine errors out with:
phn@uruk:/var/lib/redmine/default/plugins$ tail -f
/var/log/redmine/default/unicorn.stderr.log
I, [2025-11-18T05:03:49.677259 #1349] INFO -- : Refreshing Gem list
I, [2025-11-18T05:04:21.183680 #1349] INFO -- : unlinking existing
socket=/var/cache/redmine/default/sockets/redmine.socket
I, [2025-11-18T05:04:21.185348 #1349] INFO -- : listening on
addr=/var/cache/redmine/default/sockets/redmine.socket fd=8
I, [2025-11-18T05:04:21.186670 #1349] INFO -- : listening on
addr=127.0.0.1:18083 fd=9
I, [2025-11-18T05:04:21.216671 #1349] INFO -- : master process ready
I, [2025-11-18T05:04:21.272917 #1360] INFO -- : worker=0 ready
sh: 1: gs: not found
I, [2025-11-18T05:05:04.294631 #1349] INFO -- : reaped #<Process::Status: pid
1360 exit 0> worker=0
I, [2025-11-18T05:05:04.295004 #1349] INFO -- : master complete
I, [2025-11-18T05:05:05.469626 #1434] INFO -- : Refreshing Gem list
/usr/share/redmine/plugins/redmine_git_hosting/lib/redmine_git_hosting/file_logger.rb:7:
warning: already initialized constant RedmineGitHosting::FileLogger::LOG_LEVELS
/usr/share/redmine/instances/default/plugins/redmine_git_hosting/lib/redmine_git_hosting/file_logger.rb:7:
warning: previous definition of LOG_LEVELS was here
/usr/share/redmine/plugins/redmine_git_hosting/lib/redmine_git_hosting/git_access.rb:5:
warning: already initialized constant
RedmineGitHosting::GitAccess::DOWNLOAD_COMMANDS
/usr/share/redmine/instances/default/plugins/redmine_git_hosting/lib/redmine_git_hosting/git_access.rb:5:
warning: previous definition of DOWNLOAD_COMMANDS was here
/usr/share/redmine/plugins/redmine_git_hosting/lib/redmine_git_hosting/git_access.rb:6:
warning: already initialized constant
RedmineGitHosting::GitAccess::PUSH_COMMANDS
/usr/share/redmine/instances/default/plugins/redmine_git_hosting/lib/redmine_git_hosting/git_access.rb:6:
warning: previous definition of PUSH_COMMANDS was here
/usr/share/redmine/plugins/redmine_git_hosting/lib/redmine_git_hosting/mirror_keys_installer.rb:7:
warning: already initialized constant
RedmineGitHosting::MirrorKeysInstaller::GITOLITE_MIRRORING_KEYS_NAME
/usr/share/redmine/instances/default/plugins/redmine_git_hosting/lib/redmine_git_hosting/mirror_keys_installer.rb:7:
warning: previous definition of GITOLITE_MIRRORING_KEYS_NAME was here
/usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/concern.rb:162:in
`included': Cannot define multiple 'included' blocks for a Concern
(ActiveSupport::Concern::MultipleIncludedBlocks)
from
/usr/share/redmine/plugins/redmine_git_hosting/lib/redmine_git_hosting/patches/dashboard_content_project_patch.rb:8:in
`<module:DashboardContentProjectPatch>'
from
/usr/share/redmine/plugins/redmine_git_hosting/lib/redmine_git_hosting/patches/dashboard_content_project_patch.rb:5:in
`<module:Patches>'
from
/usr/share/redmine/plugins/redmine_git_hosting/lib/redmine_git_hosting/patches/dashboard_content_project_patch.rb:4:in
`<module:RedmineGitHosting>'
from
/usr/share/redmine/plugins/redmine_git_hosting/lib/redmine_git_hosting/patches/dashboard_content_project_patch.rb:3:in
`<top (required)>'
from /usr/lib/ruby/3.3.0/bundled_gems.rb:69:in `require'
from /usr/lib/ruby/3.3.0/bundled_gems.rb:69:in `block (2 levels) in
replace_require'
from
/usr/share/rubygems-integration/all/gems/zeitwerk-2.6.8/lib/zeitwerk/kernel.rb:38:in
`require'
from /usr/lib/ruby/vendor_ruby/polyglot.rb:65:in `require'
from
/usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/dependencies/require_dependency.rb:21:in
`require_dependency'
from
/usr/share/redmine/instances/default/plugins/redmine_git_hosting/lib/redmine_git_hosting/redmine_plugin_loader.rb:127:in
`block in autoload_libs!'
from
/usr/share/redmine/instances/default/plugins/redmine_git_hosting/lib/redmine_git_hosting/redmine_plugin_loader.rb:126:in
`each'
from
/usr/share/redmine/instances/default/plugins/redmine_git_hosting/lib/redmine_git_hosting/redmine_plugin_loader.rb:126:in
`autoload_libs!'
from
/usr/share/redmine/instances/default/plugins/redmine_git_hosting/lib/redmine_git_hosting/redmine_plugin_loader.rb:96:in
`load_plugin!'
from
/usr/share/redmine/instances/default/plugins/redmine_git_hosting/init.rb:72:in
`<top (required)>'
from /usr/share/redmine/lib/redmine/plugin_loader.rb:31:in `load'
from /usr/share/redmine/lib/redmine/plugin_loader.rb:31:in
`run_initializer'
from /usr/share/redmine/lib/redmine/plugin_loader.rb:67:in `each'
from /usr/share/redmine/lib/redmine/plugin_loader.rb:67:in `block in
load'
from
/usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:407:in
`instance_exec'
from
/usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:407:in
`block in make_lambda'
from
/usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:179:in
`block in call'
from
/usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:668:in
`block (2 levels) in default_terminator'
from
/usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:667:in
`catch'
from
/usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:667:in
`block in default_terminator'
from
/usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:180:in
`call'
from
/usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:559:in
`block in invoke_before'
from
/usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:559:in
`each'
from
/usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:559:in
`invoke_before'
from
/usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:109:in
`run_callbacks'
from
/usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/reloader.rb:96:in
`prepare!'
from
/usr/share/rubygems-integration/all/gems/railties-7.2.2.1/lib/rails/application/finisher.rb:74:in
`block in <module:Finisher>'
from
/usr/share/rubygems-integration/all/gems/railties-7.2.2.1/lib/rails/initializable.rb:32:in
`instance_exec'
from
/usr/share/rubygems-integration/all/gems/railties-7.2.2.1/lib/rails/initializable.rb:32:in
`run'
from
/usr/share/rubygems-integration/all/gems/railties-7.2.2.1/lib/rails/initializable.rb:61:in
`block in run_initializers'
from /usr/lib/ruby/3.3.0/tsort.rb:231:in `block in tsort_each'
from /usr/lib/ruby/3.3.0/tsort.rb:353:in `block (2 levels) in
each_strongly_connected_component'
from /usr/lib/ruby/3.3.0/tsort.rb:434:in
`each_strongly_connected_component_from'
from /usr/lib/ruby/3.3.0/tsort.rb:352:in `block in
each_strongly_connected_component'
from /usr/lib/ruby/3.3.0/tsort.rb:350:in `each'
from /usr/lib/ruby/3.3.0/tsort.rb:350:in `call'
from /usr/lib/ruby/3.3.0/tsort.rb:350:in
`each_strongly_connected_component'
from /usr/lib/ruby/3.3.0/tsort.rb:229:in `tsort_each'
from /usr/lib/ruby/3.3.0/tsort.rb:208:in `tsort_each'
from
/usr/share/rubygems-integration/all/gems/railties-7.2.2.1/lib/rails/initializable.rb:60:in
`run_initializers'
from
/usr/share/rubygems-integration/all/gems/railties-7.2.2.1/lib/rails/application.rb:435:in
`initialize!'
from /usr/share/redmine/config/environment.rb:16:in `<top (required)>'
from config.ru:4:in `require_relative'
from config.ru:4:in `block in <main>'
from
/usr/share/rubygems-integration/all/gems/rack-3.1.18/lib/rack/builder.rb:124:in
`instance_eval'
from
/usr/share/rubygems-integration/all/gems/rack-3.1.18/lib/rack/builder.rb:124:in
`initialize'
from config.ru:1:in `new'
from config.ru:1:in `<main>'
from /usr/lib/ruby/vendor_ruby/unicorn.rb:54:in `eval'
from /usr/lib/ruby/vendor_ruby/unicorn.rb:54:in `block in builder'
from /usr/lib/ruby/vendor_ruby/unicorn/http_server.rb:790:in
`build_app!'
from /usr/lib/ruby/vendor_ruby/unicorn/http_server.rb:140:in `start'
from /usr/bin/unicorn:129:in `<main>'
The issue is that the plugins files are loaded twice in unicorn. Once from
/usr/share/redmine/plugins/redmine_git_hosting
and a second time from
/usr/share/redmine/instances/default/plugins/redmine_git_hosting.
Note that if I dod not put symlink to the pluygins ins the
REDMINE_INSTANCE/plugins folder unicorn load fine but no plugin is activated
in redmine at least in the adminsitraction dashboard > plugins.
If I remove the /var/lib/redmine/default/plugins directory the plugins are
available at runtime in redmine.
I don't know how autoloading happens but it seems the fact
/usr/share/redmine/instances is a symlink to /var/lib/redmine/default/plugins
which itslef holds symlinks to the /usr/share/redmine/plugins/<x> plugfin
folder leads to them being autoloaded twice. Once from
/usr/share/redmine/plugins/redmine_git_hosting and a second time from
/usr/share/redmine/instances/default/plugins/redmine_git_hosting a symlink.
I probably have something local that leads to this double autoload but I have
no clue what it can be.
I only have one instance enabled (default).
I have leftover files from a run where I tested adding a second test instance
via dpkg-reconfigure redmine. I removed this "test"
instance entry from a followup dpkg-reconfigure redmine call.
rackup tested with:
sudo -u www-data REDMINE_INSTANCE=default rackup -E production
/etc/systemd/system/unicorn-redmine-default.service
[Unit]
Description=Unicorn application server for Redmine instance 'default'
After=network.target mysql.service
Wants=network-online.target
[Service]
Environment=REDMINE_INSTANCE="default"
Environment=RAILS_ENV="production"
ExecStart=/usr/bin/unicorn -E production -c
'/var/lib/redmine/default/config/unicorn.ru'
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-abort
User=redmine
Group=www-data
[Install]
WantedBy=multi-user.target
unicorn.ru:
"
# Ansible managed
# Sample verbose configuration file for Unicorn (not Rack)
#
# This configuration file documents many features of Unicorn
# that may not be needed for some applications. See
# http://unicorn.bogomips.org/examples/unicorn.conf.minimal.rb
# for a much simpler configuration file.
#
# See http://unicorn.bogomips.org/Unicorn/Configurator.html for complete
# documentation.
# WARNING: See config/application.rb under "Relative url support" for the list
of
# other files that need to be changed for relative url support
#
# ENV['RAILS_RELATIVE_URL_ROOT'] = "/redmine"
# Read about unicorn workers here:
# http://doc.redmine.com/ee/install/requirements.html#unicorn-workers
#
# FIXME: only 1 process for redmine/unicorn/nginx ? I only bind to one port per
instance !
worker_processes 1
# Since Unicorn is never exposed to outside clients, it does not need to
# run on the standard HTTP port (80), there is no reason to start Unicorn
# as root unless it's from system init scripts.
# If running the master process as root and the workers as an unprivileged
# user, do this to switch euid/egid in the workers (also chowns logs):
# user "unprivileged_user", "unprivileged_group"
user "redmine", "www-data"
# Help ensure your application will always spawn in the symlinked
# "current" directory that Capistrano sets up.
working_directory "/usr/share/redmine" # available in 0.94.0+
# Listen on both a Unix domain socket and a TCP port.
# If you are load-balancing multiple Unicorn masters, lower the backlog
# setting to e.g. 64 for faster failover.
listen "/var/cache/redmine/default/sockets/redmine.socket", :backlog => 64
listen "127.0.0.1:18083", :tcp_nopush => true
# nuke workers after 30 seconds instead of 60 seconds (the default)
#
# NOTICE: git push over http depends on this value.
# If you want be able to push huge amount of data to git repository over http
# you will have to increase this value too.
#
# Example of output if you try to push 1GB repo to Redmine over http.
# -> git push http://redmine.... master
#
# error: RPC failed; result=18, HTTP code = 200
# fatal: The remote end hung up unexpectedly
# fatal: The remote end hung up unexpectedly
#
# For more information see http://stackoverflow.com/a/21682112/752049
#
timeout 600
# feel free to point this anywhere accessible on the filesystem
pid "/var/cache/redmine/default/pids/unicorn.pid"
# By default, the Unicorn logger will write to stderr.
# Additionally, some applications/frameworks log to stderr or stdout,
# so prevent them from going to /dev/null when daemonized here:
stderr_path "/var/lib/redmine/default/log/unicorn.stderr.log"
stdout_path "/var/lib/redmine/default/log/unicorn.stdout.log"
# combine Ruby 2.0.0dev or REE with "preload_app true" for memory savings
# http://rubyenterpriseedition.com/faq.html#adapt_apps_for_cow
preload_app true
GC.respond_to?(:copy_on_write_friendly=) and
GC.copy_on_write_friendly = true
# Enable this flag to have unicorn test client connections by writing the
# beginning of the HTTP headers before calling the application. This
# prevents calling the application for connections that have disconnected
# while queued. This is only guaranteed to detect clients on the same
# host unicorn runs on, and unlikely to detect disconnects even on a
# fast LAN.
check_client_connection false
before_fork do |server, worker|
# the following is highly recomended for Rails + "preload_app true"
# as there's no need for the master process to hold a connection
defined?(ActiveRecord::Base) and
ActiveRecord::Base.connection.disconnect!
# The following is only recommended for memory/DB-constrained
# installations. It is not needed if your system can house
# twice as many worker_processes as you have configured.
#
# This allows a new master process to incrementally
# phase out the old master process with SIGTTOU to avoid a
# thundering herd (especially in the "preload_app false" case)
# when doing a transparent upgrade. The last worker spawned
# will then kill off the old master process with a SIGQUIT.
old_pid = "#{server.config[:pid]}.oldbin"
if old_pid != server.pid
begin
sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
Process.kill(sig, File.read(old_pid).to_i)
rescue Errno::ENOENT, Errno::ESRCH
end
end
#
# Throttle the master from forking too quickly by sleeping. Due
# to the implementation of standard Unix signal handlers, this
# helps (but does not completely) prevent identical, repeated signals
# from being lost when the receiving process is busy.
# sleep 1
end
after_fork do |server, worker|
# per-process listener ports for debugging/admin/migrations
# addr = "127.0.0.1:#{9293 + worker.nr}"
# server.listen(addr, :tries => -1, :delay => 5, :tcp_nopush => true)
# the following is *required* for Rails + "preload_app true",
defined?(ActiveRecord::Base) and
ActiveRecord::Base.establish_connection
# if preload_app is true, then you may also want to check and
# restart any other shared sockets/descriptors such as Memcached,
# and Redis. TokyoCabinet file handles are safe to reuse
# between any number of forked children (assuming your kernel
# correctly implements pread()/pwrite() system calls)
end
"
Best Regards,
Alban
-- System Information:
Debian Release: 13.1
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500,
'oldstable-updates'), (500, 'oldstable-security'), (500, 'stable'), (500,
'oldstable')
Architecture: armhf (armv7l)
Kernel: Linux 6.1.0-37-armmp (SMP w/4 CPU threads)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages redmine depends on:
ii dbconfig-common 2.0.25
ii debconf [debconf-2.0] 1.5.91
ii libjs-chart.js 3.9.1+~cs3.1.2-3
ii libjs-jquery 3.6.1+dfsg+~3.5.14-1
ii libjs-jquery-ui 1.13.2+dfsg-1
ii libjs-raphael 2.3.0-4
ii puma 6.6.0-4
ii redmine-pgsql 6.0.5+ds-1
ii ruby 1:3.3+b1
ii ruby-actionpack-action-caching 1.2.2-4
ii ruby-actionpack-xml-parser 2.0.1-5
ii ruby-addressable 2.8.7-2
ii ruby-bundler 2.6.7-2
ii ruby-capybara 3.40.0+ds-2
ii ruby-coderay 1.1.3-8
ii ruby-commonmarker 0.23.10-1+b3
ii ruby-csv 3.3.4-1
ii ruby-html-pipeline 2.14.3-2
ii ruby-i18n 1.14.7-1
ii ruby-jquery-rails 4.3.5-5
ii ruby-listen 3.9.0-1
ii ruby-mail 2.8.1+dfsg1-2
ii ruby-marcel 1.0.4+dfsg-2
ii ruby-mini-magick 5.2.0-1
ii ruby-mini-mime 1.1.5-1
ii ruby-mocha 2.4.2-2
ii ruby-net-ldap 0.19.0-1
ii ruby-nokogiri 1.18.2+dfsg-1+b1
ii ruby-rack 3.1.18-1~deb13u1
ii ruby-rails 2:7.2.2.1+dfsg-7
ii ruby-rails-dom-testing 2.2.0-1
ii ruby-rails-observers 0.1.5-1.1
ii ruby-rails-propshaft 1.1.0-3
ii ruby-rbpdf 1.21.3+dfsg-1
ii ruby-redcarpet 3.6.0-1+b5
ii ruby-rmagick 6.0.1-3
ii ruby-roadie 5.2.1-2
ii ruby-roadie-rails 3.3.0-2
ii ruby-rotp 6.2.0-2
ii ruby-rouge 4.5.1-1
ii ruby-rqrcode 2.2.0-1
ii ruby-sanitize 7.0.0-1
ii ruby-selenium-webdriver 4.4.0-1
ii ruby-simplecov 0.22.0-2
ii ruby-task-list 2.3.2-2
ii ruby-zip 2.3.2-1
Versions of packages redmine recommends:
pn passenger <none>
Versions of packages redmine suggests:
pn apache2 <none>
ii brz [bzr] 3.3.11-1
ii bzr 2.7.0+bzr6622+brz
pn cvs <none>
pn darcs <none>
ii git 1:2.47.3-0+deb13u1
pn libapache2-mod-passenger <none>
ii mercurial 7.0.1-2
ii subversion 1.14.5-3
-- Configuration Files:
/etc/default/redmine changed:
REDMINE_INSTANCES_OWNERSHIP=redmine:www-data
REDMINE_INSTANCES_FOLLOW_FHS=yes
REDMINE_INSTANCES_ROOT=/var/lib/redmine
-- debconf information:
redmine/missing-redmine-package:
redmine/instances/default/dbconfig-remove:
redmine/instances/default/pgsql/changeconf: false
redmine/instances/default/passwords-do-not-match:
* redmine/instances/default/mysql/admin-user: debian-sys-maint
redmine/instances/default/pgsql/manualconf:
* redmine/instances/default/dbconfig-reinstall: false
* redmine/instances/default/db/app-user: redmine_default@localhost
* redmine/instances/default/db/dbname: redmine_default
redmine/instances/default/remove-error: abort
* redmine/instances/default/dbconfig-install: true
* redmine/current-instances: default
redmine/instances/default/db/basepath:
* redmine/instances/default/remote/port: 3306
* redmine/instances/default/pgsql/admin-user: debian-sys-maint
redmine/instances/default/internal/skip-preseed: false
* redmine/instances/default/pgsql/authmethod-admin: ident
* redmine/instances/default/default-language: en
redmine/instances/default/internal/reconfiguring: false
* redmine/instances/default/pgsql/authmethod-user: password
redmine/instances/default/pgsql/no-empty-passwords:
* redmine/instances/default/pgsql/method: TCP/IP
* redmine/instances/default/remote/host: localhost
redmine/notify-migration:
redmine/instances/default/mysql/method: Unix socket
redmine/instances/default/purge: false
redmine/instances/default/upgrade-error: abort
redmine/instances/default/install-error: abort
redmine/instances/default/remote/newhost: localhost
* redmine/instances/default/database-type: pgsql
redmine/instances/default/upgrade-backup: true
redmine/instances/default/dbconfig-upgrade: true
redmine/instances/default/missing-db-package-error: abort
redmine/default-language: en
redmine/old-instances:
--- End Message ---
--- Begin Message ---
I am going to close this bug report as there has been no response to my
previous two emails. My assumption is this has something to do with the way
Unicorn works or is configured. I do not personally have any experience with
using Unicorn. If anyone is still experiencing this issue feel free to reopen
the bug report.
--
Soren Stoutner
[email protected]
signature.asc
Description: This is a digitally signed message part.
--- End Message ---
_______________________________________________
Pkg-ruby-extras-maintainers mailing list
[email protected]
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/pkg-ruby-extras-maintainers