Skip to content

rez-pkg-cache --clean fails when it encounters malformed json #2016

@vanridal

Description

@vanridal

Situation:
Local drive where cache dir is set ran out of space, this caused a package cache to write an empty a.json file to cached variant folder
Now most rez-pkg-cache calls fail with:

>rez-pkg-cache --clean
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:\opt\rez\bin\rez\rez-pkg-cache.exe\__main__.py", line 7, in <module>
  File "c:\opt\rez\3.2.1\Lib\site-packages\rez\cli\_entry_points.py", line 190, in run_rez_pkg_cache
    return run("pkg-cache")
           ^^^^^^^^^^^^^^^^
  File "c:\opt\rez\3.2.1\Lib\site-packages\rez\cli\_main.py", line 189, in run
    returncode = run_cmd()
                 ^^^^^^^^^
  File "c:\opt\rez\3.2.1\Lib\site-packages\rez\cli\_main.py", line 181, in run_cmd
    return func(opts, opts.parser, extra_arg_groups)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "c:\opt\rez\3.2.1\Lib\site-packages\rez\cli\pkg-cache.py", line 167, in command
    pkgcache.clean()
  File "c:\opt\rez\3.2.1\Lib\site-packages\rez\package_cache.py", line 698, in clean
    for variant, rootpath, status in self.get_variants():
                                     ^^^^^^^^^^^^^^^^^^^
  File "c:\opt\rez\3.2.1\Lib\site-packages\rez\package_cache.py", line 586, in get_variants
    data = json.loads(f.read())
           ^^^^^^^^^^^^^^^^^^^^
  File "C:\opt\python\py311\Lib\json\__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\opt\python\py311\Lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\opt\python\py311\Lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Environment

  • OS Windows 10
  • Rez version 3.2.1
  • Rez python version 3.11

To reproduce rm contents of a.json file in a cached variant

Ideally it would be good if the malformed variant was ignored and seen as not cached, so the next occurrence of the variant being called to cache, will fix the issue

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions