Favicon Error after upgrading to 3.3.3

Hi again,

I’ve upgraded to 3.3.3 and immediately received the following error (reported to admin email), which I am sharing here in case this is not an isolated event.

2024-07-03 10:16:52,101 0e2413c4f3444339 - indico.flask - ERROR errors.py:110 – no such setting: FAVICON_URL

Traceback (most recent call last):
  File "/opt/indico/.venv/lib/python3.12/site-packages/indico/core/config.py", line 291, in __getattr__
    def __getattr__(self, name):
                   ^^^^^^^^^^^^^^
KeyError: 'FAVICON_URL'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/indico/.venv/lib/python3.12/site-packages/flask/app.py", line 880, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/indico/.venv/lib/python3.12/site-packages/flask/app.py", line 865, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/indico/.venv/lib/python3.12/site-packages/indico/web/flask/util.py", line 80, in wrapper
    return obj().process()
           ^^^^^^^^^^^^^^^
  File "/opt/indico/.venv/lib/python3.12/site-packages/indico/web/rh.py", line 299, in process
    request.method, request.relative_url, request.remote_addr, os.getpid())
    ^^^^^^^^^^^^^^^^^^
  File "/opt/indico/.venv/lib/python3.12/site-packages/indico/web/rh.py", line 267, in _do_process
    return signal_rv[0]
         ^^^^^^^^^^^^^^^
  File "/opt/indico/.venv/lib/python3.12/site-packages/webargs/core.py", line 649, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/opt/indico/.venv/lib/python3.12/site-packages/indico/modules/auth/controllers.py", line 115, in _process
    return render_template('auth/login_page.html', form=form, providers=providers, active_provider=active_provider,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/indico/.venv/lib/python3.12/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/indico/.venv/lib/python3.12/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
         ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/indico/.venv/lib/python3.12/site-packages/jinja2/environment.py", line 1301, in render
    try:
        ^
  File "/opt/indico/.venv/lib/python3.12/site-packages/jinja2/environment.py", line 936, in handle_exception
    """
  File "/opt/indico/.venv/lib/python3.12/site-packages/indico/modules/auth/templates/login_page.html", line 3, in top-level template code
    {% from 'message_box.html' import message_box %}
    ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/indico/.venv/lib/python3.12/site-packages/indico/web/templates/layout/auth_base.html", line 1, in top-level template code
    {% extends 'base.html' %}
  File "/opt/indico/.venv/lib/python3.12/site-packages/indico/web/templates/base.html", line 8, in top-level template code
    {%- set favicon_url = indico_config.FAVICON_URL or (indico_config.IMAGES_BASE_URL + '/indico.ico') %}
    ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/indico/.venv/lib/python3.12/site-packages/indico/web/flask/templating.py", line 308, in getattr
    rv = super().getattr(obj, attribute)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/indico/.venv/lib/python3.12/site-packages/jinja2/environment.py", line 485, in getattr
    """
        
  File "/opt/indico/.venv/lib/python3.12/site-packages/indico/core/config.py", line 293, in __getattr__
    return self.data[name]
Exception: no such setting: FAVICON_URL

{'data': {'get': {'next': '/event/1/contributions/113/author/171'},
          'headers': {'Accept': 'text/html, application/rss+xml, '
                                'application/atom+xml, text/xml, text/rss+xml, '
                                'application/xhtml+xml',
                      'Accept-Encoding': 'gzip,deflate',
                      'Connection': 'close',
                      'Host': 'indico.eiss-europa.com',
                      'User-Agent': 'Mozilla/5.0 (compatible; SemrushBot/7~bl; '
                                    '+http://www.semrush.com/bot.html)'},
          'json': None,
          'post': {},
          'url': {}},
 'endpoint': 'auth.login',
 'id': '0e2413c4f3444339',
 'ip': '185.191.171.15',
 'method': 'GET',
 'referrer': None,
 'rh': 'RHLogin',
 'time': '2024-07-03T10:16:54.691815',
 'url': 'https://indico.eiss-europa.com/login/?next=/event/1/contributions/113/author/171',
 'user': None,
 'user_agent': 'Mozilla/5.0 (compatible; SemrushBot/7~bl; '
               '+http://www.semrush.com/bot.html)'}

Any custom changes to the code? Check /opt/indico/.venv/lib/python3.12/site-packages/indico/core/config.py, it should contain a big DEFAULTS dict containing 'FAVICON_URL': None, somewhere…

I found what you expected:

DEFAULTS = {
'FAVICON_URL': None,

In that case it’s really weird that you’re getting this error… the config data is populated first from the defaults and then from whatever you have in indico.conf. So it should be pretty much impossible for this particular key to not exist.

Any chance this happened between installing the new package and restarting uwsgi?

This might be it. I received the email a few minutes after I restarted the instance.