Skip to content

Fix Sidekiq crash when gitlab.yml contains UTF-8 characters

Stan Hu requested to merge sh-fix-utf8-encoding-settings-16-0 into 16-0-stable-ee

What does this MR do and why?

This backports !121782 (merged) to the 16-0-stable-ee branch.

In GitLab 16.0, we migrated away from Settingslogic in !113040 (merged) and started using ActiveSupport::ConfigurationFile.parse.

However, if GitLab Omnibus were configured with non-ASCII characters, such as German Umlauts, Sidekiq would fail to start up due to:

incompatible character encodings: US-ASCII and UTF-8

This happened because:

  1. Ruby sets the default encoding based on the LANG environment.
  2. When Omnibus GitLab starts Sidekiq, LANG is blank. As a result, Ruby's Encoding.default_external returns US-ASCII.
  3. When ActiveSupport::ConfigurationFile.parse runs, it attempts to scan for certain UTF-8 characters, but this fails in GitLab 16.0 since the file is read as US-ASCII.
  4. Just by calling require 'rails', Rails sets the encoding to UTF-8.
  5. However, sidekiq-cluster doesn't attempt to require 'rails' before it attempts to load the settings, and so it will crash if non-ASCII characters are present.

To fix this, set the encodings inside the GitlabSettings::Settings class to ensure configuration files are parsed as UTF-8.

Relates to #412767 (closed)

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

  • This MR is backporting a bug fix, documentation update, or spec fix, previously merged in the default branch.
  • The original MR has been deployed to GitLab.com (not applicable for documentation or spec changes).
  • This MR has a severity label assigned (if applicable).
  • This MR has been approved by a maintainer (only one approval is required).
  • Ensure the e2e:package-and-test-ee job has either succeeded or been approved by a Software Engineer in Test.

Note to the merge request author and maintainer

If you have questions about the patch release process, please:

Edited by Stan Hu

Merge request reports

Loading