kolibri icon indicating copy to clipboard operation
kolibri copied to clipboard

During cache culling, diskcache can have `None` keys that get unhandled

Open rtibbles opened this issue 3 months ago • 0 comments

This issue is not open for contribution. Visit Contributing guidelines to learn about the contributing process and how to find suitable issues.

This might just be an issue with diskcache that would be resolved by upgrading - but I think we're on the newest version that still supports Python 3.6.

  File "/exports/projectpool/fle/kolibri-ai/kolibri/utils/cli.py", line 199, in invoke
    initialize(**get_initialize_params())
  File "/exports/projectpool/fle/kolibri-ai/kolibri/utils/main.py", line 303, in initialize
    _post_django_initialization()
  File "/exports/projectpool/fle/kolibri-ai/kolibri/utils/main.py", line 233, in _post_django_initialization
    process_cache.cull()
    ^^^^^^^^^^^^^^^^^^
  File "/home/jamalex/.virtualenvs/kolibri-ai/lib/python3.12/site-packages/django/utils/functional.py", line 246, in inner
    self._setup()
  File "/home/jamalex/.virtualenvs/kolibri-ai/lib/python3.12/site-packages/django/utils/functional.py", line 382, in _setup
    self._wrapped = self._setupfunc()
                    ^^^^^^^^^^^^^^^^^
  File "/exports/projectpool/fle/kolibri-ai/kolibri/core/utils/cache.py", line 13, in __get_process_cache
    return caches["process_cache"]
           ~~~~~~^^^^^^^^^^^^^^^^^
  File "/home/jamalex/.virtualenvs/kolibri-ai/lib/python3.12/site-packages/django/utils/connection.py", line 62, in __getitem__
    conn = self.create_connection(alias)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/jamalex/.virtualenvs/kolibri-ai/lib/python3.12/site-packages/django/core/cache/__init__.py", line 44, in create_connection
    return backend_cls(location, params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/jamalex/.virtualenvs/kolibri-ai/lib/python3.12/site-packages/diskcache/djangocache.py", line 31, in __init__
    self._cache = FanoutCache(directory, shards, timeout, **options)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/jamalex/.virtualenvs/kolibri-ai/lib/python3.12/site-packages/diskcache/fanout.py", line 43, in __init__
    self._shards = tuple(
                   ^^^^^^
  File "/home/jamalex/.virtualenvs/kolibri-ai/lib/python3.12/site-packages/diskcache/fanout.py", line 44, in <genexpr>
    Cache(
  File "/home/jamalex/.virtualenvs/kolibri-ai/lib/python3.12/site-packages/diskcache/core.py", line 456, in __init__
    sql = self._sql_retry
          ^^^^^^^^^^^^^^^
  File "/home/jamalex/.virtualenvs/kolibri-ai/lib/python3.12/site-packages/diskcache/core.py", line 652, in _sql_retry
    sql = self._sql
          ^^^^^^^^^
  File "/home/jamalex/.virtualenvs/kolibri-ai/lib/python3.12/site-packages/diskcache/core.py", line 648, in _sql
    return self._con.execute
           ^^^^^^^^^
  File "/home/jamalex/.virtualenvs/kolibri-ai/lib/python3.12/site-packages/diskcache/core.py", line 641, in _con
    if key.startswith('sqlite_'):
       ^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'startswith'```

rtibbles avatar Oct 14 '25 18:10 rtibbles