update_index_one_list fails with xapian.InvalidArgumentError: Key too long: length was 257 bytes
On a Debian GNU/Linux buster with
ii libxapian30:amd64 1.4.11-1 amd64 Search engine library
ii python3-xapian 1.4.11-2 amd64 Xapian search engine interface for Python3
ii python3-xapian-haystack 2.1.0-6 all Xapian backend for Django-Haystack (Python3 version)
ii mailman3-web 0+20180916-8 all Django project integrating Mailman3 Postorius and HyperKitty
The following fails:
$ messager:/usr/share/mailman3-web time python3 manage.py update_index_one_list -v 2 XXXXX
Skipping '<class 'hyperkitty.models.category.ThreadCategory'>' - no index.
Skipping '<class 'hyperkitty.models.thread.Thread'>' - no index.
Skipping '<class 'hyperkitty.models.thread.LastView'>' - no index.
Skipping '<class 'hyperkitty.models.mailinglist.MailingList'>' - no index.
Skipping '<class 'hyperkitty.models.vote.Vote'>' - no index.
Indexing 74368 emails
indexed 1 - 1000 of 74368 (worker PID: 32403).
indexed 1001 - 2000 of 74368 (worker PID: 32403).
...
indexed 39001 - 40000 of 74368 (worker PID: 32403).
[ERROR/MainProcess] Failed indexing 39001 - 40000 (retry 5/5): Key too long: length was 257 bytes, maximum length of a key is 255 bytes (pid 32403): Key too long: length was 257 bytes, ma
ximum length of a key is 255 bytes
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/haystack/management/commands/update_index.py", line 97, in do_update
backend.update(index, current_qs, commit=commit)
File "/usr/lib/python3/dist-packages/xapian_backend.py", line 495, in update
database.close()
xapian.InvalidArgumentError: Key too long: length was 257 bytes, maximum length of a key is 255 bytes
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/usr/lib/python3/dist-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
utility.execute()
File "/usr/lib/python3/dist-packages/django/core/management/__init__.py", line 356, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/lib/python3/dist-packages/django/core/management/base.py", line 283, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/lib/python3/dist-packages/django/core/management/base.py", line 330, in execute
output = self.handle(*args, **options)
File "/usr/lib/python3/dist-packages/hyperkitty/management/commands/update_index_one_list.py", line 41, in handle
verbosity=options["verbosity"])
File "/usr/lib/python3/dist-packages/hyperkitty/search_indexes.py", line 115, in update_index
update_cmd.update_backend("hyperkitty", "default")
File "/usr/lib/python3/dist-packages/haystack/management/commands/update_index.py", line 276, in update_backend
last_max_pk=max_pk)
File "/usr/lib/python3/dist-packages/haystack/management/commands/update_index.py", line 97, in do_update
backend.update(index, current_qs, commit=commit)
File "/usr/lib/python3/dist-packages/xapian_backend.py", line 495, in update
database.close()
xapian.InvalidArgumentError: Key too long: length was 257 bytes, maximum length of a key is 255 bytes
...