Permit symbols when loading mail_room.yml
What does this MR do?
The YAML.safe_load
changes made by
!58042 (merged)
broke the diagnostic rake task gitlab:incoming_email:check
due to use of symbols for keys inside the ERB template
file config/mail_room.yml
.
This change adds an exclusion permitting loading of
Symbol
classes when parsing the YAML syntax for this
specific file.
Fixes #331683 (closed)
Screenshots (strongly suggested)
Error without the fix:
Checking Incoming Email ...
Incoming Email: ... Checking Reply by email ...
IMAP server credentials are correct? ... Exception: Tried to load unspecified class: Symbol
…
Manual rails console test verifying the change:
irb(main):019:0> YAML.safe_load(ERB.new(File.read("/opt/gitlab/embedded/service/gitlab-rails/config/mail_room.yml")).result)
Traceback (most recent call last):
1: from (irb):19
Psych::DisallowedClass (Tried to load unspecified class: Symbol)
irb(main):021:0> YAML.safe_load(ERB.new(File.read("/opt/gitlab/embedded/service/gitlab-rails/config/mail_room.yml")).result, [Symbol])
=> {:mailboxes=>[{:host=>"gitlab.example.com", :port=>143, :ssl=>false, :start_tls=>false, :email=>"incoming", :password=>"[REDACTED]", :idle_timeout=>60, :logger=>{:log_path=>"/var/log/gitlab/mailroom/mail_room_json.log"}, :name=>"inbox", :delete_after_delivery=>true, :expunge_deleted=>true, :inbox_method=>"imap", :delivery_method=>"sidekiq", :delivery_options=>{:redis_url=>"unix:/var/opt/gitlab/redis/redis.socket", :namespace=>"resque:gitlab", :queue=>"email_receiver", :worker=>"EmailReceiverWorker"}, :arbitration_method=>"redis", :arbitration_options=>{:redis_url=>"unix:/var/opt/gitlab/redis/redis.socket", :namespace=>"mail_room:gitlab"}}]}
Does this MR meet the acceptance criteria?
Conformity
-
I have included a changelog entry, or it's not needed. (Does this MR need a changelog?) -
I have added/updated documentation, or it's not needed. (Is documentation required?) -
I have properly separated EE content from FOSS, or this MR is FOSS only. (Where should EE code go?) -
I have added information for database reviewers in the MR description, or it's not needed. (Does this MR have database related changes?) -
I have self-reviewed this MR per code review guidelines. -
This MR does not harm performance, or I have asked a reviewer to help assess the performance impact. (Merge request performance guidelines) -
I have followed the style guides.
Availability and Testing
-
I have added/updated tests following the Testing Guide, or it's not needed. (Consider all test levels. See the Test Planning Process.) -
I have tested this MR in all supported browsers, or it's not needed. -
I have informed the Infrastructure department of a default or new setting change per definition of done, or it's not needed.
Edited by Harsh Chouraria