Skip to content

Source package over 2G crash the importer

When a source package upload includes a file over 2G, it fails to be added to the repository because the file size is coded on a IntegerField (int32).

To handle bigger files, the size should use BigIntegerField.

Trackback:

Traceback (most recent call last):
  File "/var/www/debexpo/debexpo/importer/models.py", line 227, in process_spool
    upload = self.process_upload(changes)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/www/debexpo/debexpo/importer/models.py", line 411, in process_upload
    upload = self._accept_upload(changes, source, plugins)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/www/debexpo/debexpo/importer/models.py", line 424, in _accept_upload
    self.repository.install(changes)
  File "/usr/lib/python3.11/contextlib.py", line 81, in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
  File "/var/www/debexpo/debexpo/repository/models.py", line 300, in install
    self._install_new_entries(files_to_install, pool_dir, changes)
  File "/var/www/debexpo/debexpo/repository/models.py", line 279, in _install_new_entries
    entry.full_clean()
  File "/usr/lib/python3/dist-packages/django/db/models/base.py", line 1251, in full_clean
    raise ValidationError(errors)
django.core.exceptions.ValidationError: {'size': ['Ensure this value is less than or equal to 2147483647.']}
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information