Skip to content

Crashes when meets it's own temp file #7

Closed
@varnav

Description

@varnav

I often get errors like this:

✅  [OPTIMIZED] .\22may_shaslyk\22may_shaslyk 051.jpg
     JPG/RGB: 622.0 KB  ->  JPG/RGB: 345.3 KB 🔻 44.5%concurrent.futures.process._RemoteTraceback:
"""
Traceback (most recent call last):
  File "c:\users\someone\appdata\local\programs\python\python37\lib\shutil.py", line 566, in move
    os.rename(src, real_dst)
FileExistsError: [WinError 183] Невозможно создать файл, так как он уже существует: '.\\22may_shaslyk/~temp~22may_shaslyk 052.jpg' -> '.\\22may_shaslyk\\22may_shaslyk 052.jpg'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\users\someone\appdata\local\programs\python\python37\lib\concurrent\futures\process.py", line 239, in _process_worker
    r = call_item.fn(*call_item.args, **call_item.kwargs)
  File "c:\users\someone\appdata\local\programs\python\python37\lib\concurrent\futures\process.py", line 198, in _process_chunk
    return [fn(*args) for args in chunk]
  File "c:\users\someone\appdata\local\programs\python\python37\lib\concurrent\futures\process.py", line 198, in <listcomp>
    return [fn(*args) for args in chunk]
  File "c:\users\someone\appdata\local\programs\python\python37\lib\site-packages\optimize_images\__main__.py", line 67, in do_optimization
    return optimize_jpg(t)
  File "c:\users\someone\appdata\local\programs\python\python37\lib\site-packages\optimize_images\img_optimize_jpg.py", line 104, in optimize_jpg
    shutil.move(temp_file_path, os.path.expanduser(t.src_path))
  File "c:\users\someone\appdata\local\programs\python\python37\lib\shutil.py", line 580, in move
    copy_function(src, real_dst)
  File "c:\users\someone\appdata\local\programs\python\python37\lib\shutil.py", line 266, in copy2
    copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "c:\users\someone\appdata\local\programs\python\python37\lib\shutil.py", line 121, in copyfile
    with open(dst, 'wb') as fdst:
OSError: [Errno 22] Invalid argument: '.\\22may_shaslyk\\22may_shaslyk 052.jpg'
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "c:\users\someone\appdata\local\programs\python\python37\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "c:\users\someone\appdata\local\programs\python\python37\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Users\someone\AppData\Local\Programs\Python\Python37\Scripts\optimize-images.exe\__main__.py", line 9, in <module>
  File "c:\users\someone\appdata\local\programs\python\python37\lib\site-packages\optimize_images\__main__.py", line 96, in main
    for r in executor.map(do_optimization, tasks):
  File "c:\users\someone\appdata\local\programs\python\python37\lib\concurrent\futures\process.py", line 483, in _chain_from_iterable_of_lists
    for element in iterable:
  File "c:\users\someone\appdata\local\programs\python\python37\lib\concurrent\futures\_base.py", line 598, in result_iterator
    yield fs.pop().result()
  File "c:\users\someone\appdata\local\programs\python\python37\lib\concurrent\futures\_base.py", line 435, in result
    return self.__get_result()
  File "c:\users\someone\appdata\local\programs\python\python37\lib\concurrent\futures\_base.py", line 384, in __get_result
    raise self._exception
OSError: [Errno 22] Invalid argument: '.\\22may_shaslyk\\22may_shaslyk 052.jpg'

Looks like it's a race condition. It's less likely to happen if system is under load. I'm running under Windows 10.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions