[Pkg-mailman-hackers] Bug#1037358: mailman3-web: Upgrade from Debian 11 to Debian 12 broke mailman/mailman3-web

Norbert Preining norbert at preining.info
Fri Jun 23 07:24:42 BST 2023


Hi PEB,

> Indeed, when I fixed the 3.10 testing issues, I failed to have the
> config for mailman3-web fixed.
> 
> I'll add these and send a stable-pu.

Thanks!

> > - /etc/cron.d/mailman3 contains a call to gatenews which triggers errors
> >   and probalby should not be called in the cron script
> 
> Right, it still is in my todolist, which is a shame as it's trivial to
> fix. I guess the reason I never dropped it is that it's harmless as the
> script refuses to run.

Yeah, but the repeated emails from cron with the warning are a bit painful.


> > - even with the above changes, the hourly run job fails (that is actually
> >   a serious bug!)
> >
> > /usr/lib/python3/dist-packages/whoosh/codec/whoosh3.py:1116: SyntaxWarning: "is" with a literal. Did you mean "=="?
> >   elif fixedsize is 0:
> > [ERROR/MainProcess] Failed indexing 1 - 1 (retry 5/5): no such column: hyperkitty_mailinglist.archive_rendering_mode (pid 4974): no such column:
> > hyperkitty_mailinglist.archive_rendering_mode
> > Traceback (most recent call last):
> >   File "/usr/lib/python3/dist-packages/django/db/models/fields/related_descriptors.py", line 173, in __get__
> >     rel_obj = self.field.get_cached_value(instance)
> >               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >   File "/usr/lib/python3/dist-packages/django/db/models/fields/mixins.py", line 15, in get_cached_value
> >     return instance._state.fields_cache[cache_name]
> >            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
> > KeyError: 'mailinglist'
> >
> > During handling of the above exception, another exception occurred:
> >
> > Traceback (most recent call last):
> >   File "/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 84, in _execute
> >     return self.cursor.execute(sql, params)
> >            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >   File "/usr/lib/python3/dist-packages/django/db/backends/sqlite3/base.py", line 423, in execute
> >     return Database.Cursor.execute(self, query, params)
> >            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > sqlite3.OperationalError: no such column: hyperkitty_mailinglist.archive_rendering_mode
> >
> > The above exception was the direct cause of the following exception:
> >
> > Traceback (most recent call last):
> >   File "/usr/lib/python3/dist-packages/haystack/management/commands/update_index.py", line 119, in do_update
> >     backend.update(index, current_qs, commit=commit)
> >   File "/usr/lib/python3/dist-packages/haystack/backends/whoosh_backend.py", line 258, in update
> >     doc = index.full_prepare(obj)
> >           ^^^^^^^^^^^^^^^^^^^^^^^
> >   File "/usr/lib/python3/dist-packages/haystack/indexes.py", line 235, in full_prepare
> >     self.prepared_data = self.prepare(obj)
> >                          ^^^^^^^^^^^^^^^^^
> >   File "/usr/lib/python3/dist-packages/haystack/indexes.py", line 226, in prepare
> >     self.prepared_data[field.index_fieldname] = field.prepare(obj)
> >                                                 ^^^^^^^^^^^^^^^^^^
> >   File "/usr/lib/python3/dist-packages/haystack/fields.py", line 236, in prepare
> >     return self.convert(super().prepare(obj))
> >                         ^^^^^^^^^^^^^^^^^^^^
> >   File "/usr/lib/python3/dist-packages/haystack/fields.py", line 105, in prepare
> >     values = self.resolve_attributes_lookup(current_objects, attrs)
> >              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >   File "/usr/lib/python3/dist-packages/haystack/fields.py", line 125, in resolve_attributes_lookup
> >     if not hasattr(current_object, attributes[0]):
> >            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >   File "/usr/lib/python3/dist-packages/django/db/models/fields/related_descriptors.py", line 187, in __get__
> >     rel_obj = self.get_object(instance)
> >               ^^^^^^^^^^^^^^^^^^^^^^^^^
> >   File "/usr/lib/python3/dist-packages/django/db/models/fields/related_descriptors.py", line 154, in get_object
> >     return qs.get(self.field.get_reverse_related_filter(instance))
> >            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >   File "/usr/lib/python3/dist-packages/django/db/models/query.py", line 431, in get
> >     num = len(clone)
> >           ^^^^^^^^^^
> >   File "/usr/lib/python3/dist-packages/django/db/models/query.py", line 262, in __len__
> >     self._fetch_all()
> >   File "/usr/lib/python3/dist-packages/django/db/models/query.py", line 1324, in _fetch_all
> >     self._result_cache = list(self._iterable_class(self))
> >                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >   File "/usr/lib/python3/dist-packages/django/db/models/query.py", line 51, in __iter__
> >     results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
> >               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >   File "/usr/lib/python3/dist-packages/django/db/models/sql/compiler.py", line 1175, in execute_sql
> >     cursor.execute(sql, params)
> >   File "/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 66, in execute
> >     return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
> >            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >   File "/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 75, in _execute_with_wrappers
> >     return executor(sql, params, many, context)
> >            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >   File "/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 79, in _execute
> >     with self.db.wrap_database_errors:
> >   File "/usr/lib/python3/dist-packages/django/db/utils.py", line 90, in __exit__
> >     raise dj_exc_value.with_traceback(traceback) from exc_value
> >   File "/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 84, in _execute
> >     return self.cursor.execute(sql, params)
> >            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >   File "/usr/lib/python3/dist-packages/django/db/backends/sqlite3/base.py", line 423, in execute
> >     return Database.Cursor.execute(self, query, params)
> >            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > django.db.utils.OperationalError: no such column: hyperkitty_mailinglist.archive_rendering_mode
> 
> Erm, this one is weird, I did not meet it. What cron are you referring
> to?
> 
> The hourly tasks cron for mailman3 web runs smoothly here.

Hmm, I guess it was this one
	@hourly            www-data     [ -f /usr/bin/django-admin ] && flock -n /var/run/mailman3-web/cron.hourly /usr/share/mailman3-web/manage.py runjobs hourly

Do you have hyperkitty active?

I faintly remember (now some weeks have passed) that I had to do something
to get the new table column added:

	no such column: hyperkitty_mailinglist.archive_rendering_mode

Maybe that was the source of the error, too? Not sure.
Sorry for not remembering that now.

Best regards

Norbert

--
PREINING Norbert                              https://www.preining.info
Mercari Inc.     +     IFMGA Guide     +     TU Wien     +     TeX Live
GPG: 0x860CDC13   fp: F7D8 A928 26E3 16A1 9FA0 ACF0 6CAC A448 860C DC13



More information about the Pkg-mailman-hackers mailing list