[Pkg-mailman-hackers] Bug#1120645: mailman3-web: Deleting threads causes django errors

Peter Chubb peter.chubb at unsw.edu.au
Thu Nov 13 20:32:29 GMT 2025


Package: mailman3-web
Version: 0+20240312-2
Severity: normal

Dear Maintainer,

Some spam came through on one of our lists and I wanted to delete the messages
via hyperkitty/mailman-web.  I select the thread, hit 'delete thread', get 
the confirmation page, then see a spinning waiting wheel.

In the logs I see:

Internal Server Error: /hyperkitty/list/<LIST_NAME>/recent-threads

DoesNotExist at /hyperkitty/list/<LIST-NAME>s/recent-threads
Thread matching query does not exist.

Request Method: GET
Request URL: https://<LIST-SITE>/hyperkitty/list/<LIST-NAME>/recent-threads
Django Version: 4.2.23
Python Executable: /usr/bin/uwsgi-core
Python Version: 3.13.7
Python Path: ['.', '', '/usr/lib/python313.zip', '/usr/lib/python3.13', '/usr/lib/python3.13/lib-dynload', '/usr/local/lib/python3.13/dist-packages', '/opt/mailman/plugins/strip_footer_plugin', '/usr/lib/python3/dist-packages', '/usr/lib/python3/dist-packages/setuptools/_vendor']
Server time: Fri, 14 Nov 2025 07:20:28 +1100
Installed Applications:
('captcha',
 'hyperkitty',
 'postorius',
 'django_mailman3',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'rest_framework',
 'django_gravatar',
 'compressor',
 'haystack',
 'django_extensions',
 'django_q',
 'allauth',
 'allauth.account',
 'allauth.socialaccount')
Installed Middleware:
('allauth.account.middleware.AccountMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.middleware.locale.LocaleMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.middleware.security.SecurityMiddleware',
 'django_mailman3.middleware.TimezoneMiddleware',
 'postorius.middleware.PostoriusMiddleware')


Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/django/core/handlers/base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/hyperkitty/lib/view_helpers.py", line 137, in inner
    return func(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/hyperkitty/views/mlist.py", line 250, in overview_recent_threads
    'threads': mlist.recent_threads[:20],
               ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/hyperkitty/models/mailinglist.py", line 163, in recent_threads
    return self.cached_values["recent_threads"]()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/hyperkitty/models/common.py", line 58, in __call__
    return self.get_or_set(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/hyperkitty/models/mailinglist.py", line 333, in get_or_set
    return [Thread.objects.get(pk=pk) for pk in thread_ids]
            ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/django/db/models/manager.py", line 87, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/django/db/models/query.py", line 637, in get
    raise self.model.DoesNotExist(
    ^

Exception Type: DoesNotExist at /hyperkitty/list/summit at sel4.systems/recent-threads
Exception Value: Thread matching query does not exist.
Raised during: hyperkitty.views.mlist.overview_recent_threads

-- System Information:
Debian Release: forky/sid
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 'unstable'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 6.12.41+deb13-cloud-amd64 (SMP w/1 CPU thread; PREEMPT)
Locale: LANG=en_AU.UTF-8, LC_CTYPE=en_AU.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 mailman3-web depends on:
ii  dbconfig-sqlite3           2.0.25
ii  debconf [debconf-2.0]      1.5.91
ii  init-system-helpers        1.69
ii  python3                    3.13.7-1
ii  python3-django-hyperkitty  1.3.12-3
ii  python3-django-postorius   1.3.13-1
ii  python3-psycopg2           2.9.10-1+b1
ii  python3-whoosh             2.7.4+git6-g9134ad92-10
ii  ucf                        3.0052
ii  uwsgi-core                 2.0.29-1+b1
ii  uwsgi-plugin-python3       2.0.29+1+0.0.2+b2

Versions of packages mailman3-web recommends:
ii  nginx  1.28.0-3

Versions of packages mailman3-web suggests:
ii  postgresql  17+282

-- debconf information:
  mailman3-web/db/basepath:
* mailman3-web/pgsql/method: Unix socket
* mailman3-web/dbconfig-reinstall: true
  mailman3-web/missing-db-package-error: abort
* mailman3-web/pgsql/admin-user: postgres
* mailman3-web/passwords-do-not-match:
  mailman3-web/purge: false
* mailman3-web/restart-webserver: true
  mailman3-web/upgrade-error: abort
  mailman3-web/nginx-choice:
  mailman3-web/install-error: abort
  mailman3-web/mysql/method: Unix socket
* mailman3-web/superuser-mail: listadmin at sel4.systems
* mailman3-web/emailname: sel4.systems
  mailman3-web/internal/reconfiguring: false
* mailman3-web/dbconfig-install: true
  mailman3-web/pgsql/changeconf: false
  mailman3-web/remote/port:
* mailman3-web/db/app-user: mailman3web at localhost
  mailman3-web/dbconfig-upgrade: true
* mailman3-web/superuser-name: seL4
  mailman3-web/dbconfig-remove: true
  mailman3-web/pgsql/no-empty-passwords:
* mailman3-web/db/dbname: mailman3web
  mailman3-web/internal/skip-preseed: false
* mailman3-web/configure-webserver: none
  mailman3-web/pgsql/manualconf:
  mailman3-web/upgrade-backup: true
  mailman3-web/mysql/authplugin: default
* mailman3-web/pgsql/authmethod-user: ident
  mailman3-web/mysql/admin-user:
  mailman3-web/remove-error: abort
* mailman3-web/database-type: pgsql
* mailman3-web/pgsql/authmethod-admin: ident
  mailman3-web/remote/host: localhost
  mailman3-web/remote/newhost:



More information about the Pkg-mailman-hackers mailing list