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

Martin Krolikowski martin.krolikowski at gmail.com
Fri Jun 23 09:40:12 BST 2023


Hi,
after the upgrade I ran into the same problem:
# django.db.utils.OperationalError: no such column:
hyperkitty_mailinglist.archive_rendering_mode

I solved it by following the post upgrade steps described here:
https://docs.mailman3.org/en/latest/upgrade-guide.html
# mailman-web migrate
solved the hyperkitty error above.

Regards
Martin


Am Fr., 23. Juni 2023 um 10:33 Uhr schrieb Pierre-Elliott Bécue
<peb at debian.org>:
>
>
> De : Norbert Preining <norbert at preining.info>
> À : Pierre-Elliott Bécue <peb at debian.org>
> Cc : 1037358 at bugs.debian.org
> Date : 23 juin 2023 09:05:40
> Objet : Re: Bug#1037358: mailman3-web: Upgrade from Debian 11 to Debian 12 broke mailman/mailman3-web
>
> > 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
> Hello Norbert,
>
> Ack for the cron ! It will be in a stable pu and it should have been fixed far earlier, sorry for that.
>
> For the traceback, yes, I use HyperKitty, I'll do some tests just to make sure that I just did not miss it. The first idea that came to me was an unsucessful django migration during the upgrade but I think you'd have spotted it.
>
> I'll try to reach out with more ideas soon.
>
> Thanks again for your feedback!
>
> --
> Pierre-Elliott Bécue
>
> --
> To unsubscribe, send mail to 1037358-unsubscribe at bugs.debian.org.



More information about the Pkg-mailman-hackers mailing list