modoboa / modoboa-installer

An installer for Modoboa
MIT License
254 stars 135 forks source link

KeyError: 'modoboa' when upgrading from 2.2.2 to 2.2.4 #555

Closed truenicoco closed 3 months ago

truenicoco commented 3 months ago

Impacted versions

Steps to reproduce

I followed the instructions of the docs and got:

(env) modoboa@mail ~/instance> python manage.py check --deploy
Traceback (most recent call last):
  File "/srv/modoboa/instance/manage.py", line 22, in <module>
    main()
  File "/srv/modoboa/instance/manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
    utility.execute()
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/core/management/__init__.py", line 436, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/core/management/base.py", line 412, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/core/management/base.py", line 458, in execute
    output = self.handle(*args, **options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/core/management/commands/check.py", line 76, in handle
    self.check(
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/core/management/base.py", line 485, in check
    all_issues = checks.run_checks(
                 ^^^^^^^^^^^^^^^^^^
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/core/checks/registry.py", line 88, in run_checks
    new_errors = check(app_configs=app_configs, databases=databases)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/modoboa/env/lib/python3.11/site-packages/modoboa/imap_migration/checks.py", line 22, in check_auto_creation_is_enabled
    lc = core_models.LocalConfig.objects.first()
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/db/models/manager.py", line 87, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/db/models/query.py", line 1057, in first
    for obj in queryset[:1]:
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/db/models/query.py", line 398, in __iter__
    self._fetch_all()
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/db/models/query.py", line 1881, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/db/models/query.py", line 122, in __iter__
    obj = model_cls.from_db(
          ^^^^^^^^^^^^^^^^^^
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/db/models/base.py", line 582, in from_db
    new = cls(*values)
          ^^^^^^^^^^^^
  File "/srv/modoboa/env/lib/python3.11/site-packages/modoboa/core/models.py", line 461, in __init__
    self.parameters = param_tools.Manager("global", self._parameters)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/modoboa/env/lib/python3.11/site-packages/modoboa/parameters/tools.py", line 174, in __init__
    registry._load_default_values(level)
  File "/srv/modoboa/env/lib/python3.11/site-packages/modoboa/parameters/tools.py", line 57, in _load_default_values
    form = data["formclass"](load_values_from_db=False)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/modoboa/env/lib/python3.11/site-packages/modoboa/core/app_settings.py", line 559, in __init__
    self.fields["password_scheme"].choices = get_password_scheme()
                                             ^^^^^^^^^^^^^^^^^^^^^
  File "/srv/modoboa/env/lib/python3.11/site-packages/modoboa/core/app_settings.py", line 50, in get_password_scheme
    get_queue("modoboa").enqueue(job_retrieve_available_hashers)
    ^^^^^^^^^^^^^^^^^^^^
  File "/srv/modoboa/env/lib/python3.11/site-packages/django_rq/queues.py", line 171, in get_queue
    is_async = QUEUES[name].get('ASYNC', True)
               ~~~~~~^^^^^^
KeyError: 'modoboa'

Expected behavior

Upgrade should have completed successfully.

ecolipain commented 3 months ago

Did you first complete and apply the upgrade instructions under "Specific Instructions" subheading "2.2.3". https://modoboa.readthedocs.io/en/latest/upgrade.html#specific-instructions The key error would seem to point to a problem with /etc/supervisor/conf.d/modoboa-base-worker.conf.

truenicoco commented 3 months ago

You mean did I RTFM? Oops I didn't, d'uh!

Thanks, this raised a few warnings but now works:

System check identified some issues:

WARNINGS: ?: (modoboa-amavis.W001) AMAVIS_DEFAULT_DATABASE_ENCODING does not match the character encoding used by the Amavis database. HINT: Check your database character encoding and set/update AMAVIS_DEFAULT_DATABASE_ENCODING. ?: (security.W001) You do not have 'django.middleware.security.SecurityMiddleware' in your MIDDLEWARE so the SECURE_HSTS_SECONDS, SECURE_CONTENT_TYPE_NOSNIFF, SECURE_REFERRER_POLICY, SECURE_CROSS_ORIGIN_OPENER_POLICY, and SECURE_SSL_REDIRECT settings will have no effect.

System check identified 2 issues (3 silenced).