Since about two days ago, all attempts to archive messages via Hyperkitty have raised the error below.
So far as I know, I haven't updated any packages, or changed any config. I don't know why this has started happening.
Internal Server Error: /hyperkitty/api/mailman/archive
IntegrityError at /hyperkitty/api/mailman/archive NOT NULL constraint failed: hyperkitty_attachment.size
Request Method: POST Request URL: http://lists.my-domain.org/hyperkitty/api/mailman/archive?key=NotMyRealKey Django Version: 2.0.5 Python Executable: /home/eric/.local/share/virtualenvs/mailman-FH66s6f7/bin/python Python Version: 3.5.2
Traceback:
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/django/db/backends/utils.py" in _execute 85. return self.cursor.execute(sql, params)
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/django/db/backends/sqlite3/base.py" in execute 303. return Database.Cursor.execute(self, query, params)
The above exception (NOT NULL constraint failed: hyperkitty_attachment.size) was the direct cause of the following exception:
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner 35. response = get_response(request)
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response 128. response = self.process_exception_by_middleware(e, request)
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response 126. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/hyperkitty/views/mailman.py" in _decorator 72. return func(request, *args, **kwargs)
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/django/views/decorators/csrf.py" in wrapped_view 54. return view_func(*args, **kwargs)
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/hyperkitty/views/mailman.py" in archive 119. add_to_list(mlist_fqdn, msg)
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/hyperkitty/lib/incoming.py" in add_to_list 162. encoding=encoding)
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/django/db/models/manager.py" in manager_method 82. return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/django/db/models/query.py" in create 417. obj.save(force_insert=True, using=self.db)
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/django/db/models/base.py" in save 729. force_update=force_update, update_fields=update_fields)
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/django/db/models/base.py" in save_base 759. updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/django/db/models/base.py" in _save_table 842. result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/django/db/models/base.py" in _do_insert 880. using=using, raw=raw)
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/django/db/models/manager.py" in manager_method 82. return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/django/db/models/query.py" in _insert 1125. return query.get_compiler(using=using).execute_sql(return_id)
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/django/db/models/sql/compiler.py" in execute_sql 1283. cursor.execute(sql, params)
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/django/db/backends/utils.py" in execute 68. return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/django/db/backends/utils.py" in _execute_with_wrappers 77. return executor(sql, params, many, context)
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/django/db/backends/utils.py" in _execute 85. return self.cursor.execute(sql, params)
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/django/db/utils.py" in __exit__ 89. raise dj_exc_value.with_traceback(traceback) from exc_value
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/django/db/backends/utils.py" in _execute 85. return self.cursor.execute(sql, params)
File "/home/eric/.local/share/virtualenvs/mailman-FH66s6f7/lib/python3.5/site-packages/django/db/backends/sqlite3/base.py" in execute 303. return Database.Cursor.execute(self, query, params)
Exception Type: IntegrityError at /hyperkitty/api/mailman/archive Exception Value: NOT NULL constraint failed: hyperkitty_attachment.size Request information: USER: AnonymousUser
GET: key = 'NotMyRealKey'
POST: mlist = 'my-list@lists.my-domain.org'
FILES: message = <InMemoryUploadedFile: message.txt ()>
COOKIES: No cookie data
META: CONTENT_LENGTH = '579002' CONTENT_TYPE = 'multipart/form-data; boundary=4c9a29456f514b2a9ef4f9a5d042abc6' HTTP_ACCEPT = '*/*' HTTP_ACCEPT_ENCODING = 'gzip, deflate' HTTP_CONNECTION = 'close' HTTP_HOST = 'lists.my-domain.org' HTTP_USER_AGENT = 'python-requests/2.18.4' HTTP_X_FORWARDED_FOR = 'xxx.xxx.xx.xxx' HTTP_X_FORWARDED_HOST = 'lists.my-domain.org' HTTP_X_REAL_IP = 'xxx.xxx.xx.xxx' PATH_INFO = '/hyperkitty/api/mailman/archive' QUERY_STRING = 'key=NotMyRealKey' REMOTE_ADDR = '127.0.0.1' REQUEST_METHOD = 'POST' SCRIPT_NAME = '' SERVER_NAME = '127.0.0.1' SERVER_PORT = '231742768' SERVER_PROTOCOL = 'HTTP/1.0' wsgi.errors = <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'> wsgi.file_wrapper = '' wsgi.input = <_io.BytesIO object at 0x7f940d0055c8> wsgi.multiprocess = True wsgi.multithread = False wsgi.run_once = False wsgi.url_scheme = 'http' wsgi.version = '(1, 0)'