Skip to content

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
...