Skip to content

Hanging after keyboard interrupt during jdk retrieval #28

@gselzer

Description

@gselzer

This error is likely pretty rare, but recording it anyways. Not a priority to fix.

We've recently started using cjdk in napari-imagej, and with this change I've been re-evaluating our installation process.

I ran one test with an environment where pyimagej was installed from Github. When napari-imagej launched, I used Ctrl+C to close napari, which shut down during JDK extraction process. I then tried restarting napari (after installing a different pyimagej version as a part of my testing) and now CDK hangs as it waits for that download+extraction to complete, throwing an error after a 5 minute timeout.

Of course, I can wipe the cjdk cache to fix this, but maybe we could do better?

 napari-imagej  napari --with napari-imagej
cjdk: Installing JDK zulu-jre:11.0.28 to C:\Users\gjselzer\AppData\Local\cjdk\cache
Download 100% of  38.8 MiB |#########################################################################################################################################################################################| Elapsed Time: 0:00:02 Time:  0:00:02
Extract  12% (50 of 415) |######################                                                                                                                                                                     | Elapsed Time: 0:00:00 ETA:   0:00:00Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:\Users\gjselzer\micromamba\Scripts\napari.exe\__main__.py", line 7, in <module>
  File "C:\Users\gjselzer\micromamba\Lib\site-packages\napari\__main__.py", line 566, in main
    _run()
  File "C:\Users\gjselzer\micromamba\Lib\site-packages\napari\__main__.py", line 385, in _run
    run(gui_exceptions=True)
  File "C:\Users\gjselzer\micromamba\Lib\site-packages\napari\_qt\qt_event_loop.py", line 408, in run
    with (
  File "C:\Users\gjselzer\micromamba\Lib\contextlib.py", line 144, in __exit__
    next(self.gen)
  File "C:\Users\gjselzer\micromamba\Lib\site-packages\napari\_qt\utils.py", line 393, in _maybe_allow_interrupt
    old_sigint_handler(*handler_args)
KeyboardInterrupt
Extract  17% (72 of 415) |################################                                                                                                                                                           | Elapsed Time: 0:00:00 ETA:   0:00:00Traceback (most recent call last):
  File "C:\Users\gjselzer\micromamba\Lib\shutil.py", line 633, in _rmtree_unsafe
    os.unlink(fullname)
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\Users\\gjselzer\\AppData\\Local\\Temp\\cjdk-1ppwkdx_\\archive.zip'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\gjselzer\micromamba\Lib\weakref.py", line 666, in _exitfunc
    f()
  File "C:\Users\gjselzer\micromamba\Lib\weakref.py", line 590, in __call__
    return info.func(*info.args, **(info.kwargs or {}))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\gjselzer\micromamba\Lib\tempfile.py", line 935, in _cleanup
    cls._rmtree(name, ignore_errors=ignore_errors)
  File "C:\Users\gjselzer\micromamba\Lib\tempfile.py", line 930, in _rmtree
    _shutil.rmtree(name, onexc=onexc)
  File "C:\Users\gjselzer\micromamba\Lib\shutil.py", line 781, in rmtree
    return _rmtree_unsafe(path, onexc)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\gjselzer\micromamba\Lib\shutil.py", line 635, in _rmtree_unsafe
    onexc(os.unlink, fullname, err)
  File "C:\Users\gjselzer\micromamba\Lib\tempfile.py", line 905, in onexc
    _os.unlink(path)
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\Users\\gjselzer\\AppData\\Local\\Temp\\cjdk-1ppwkdx_\\archive.zip'
 napari-imagej  ^C
 napari-imagej  pip install pyimagej==1.7.0
Collecting pyimagej==1.7.0
.
.
.
Successfully installed pyimagej-1.7.0
 napari-imagej  napari --with napari-imagej
Already downloading; waiting / |                                                                                                 #                                                                                                | 0 Elapsed Time: 0:05:00
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:\Users\gjselzer\micromamba\Scripts\napari.exe\__main__.py", line 7, in <module>
  File "C:\Users\gjselzer\micromamba\Lib\site-packages\napari\__main__.py", line 566, in main
    _run()
  File "C:\Users\gjselzer\micromamba\Lib\site-packages\napari\__main__.py", line 385, in _run
    run(gui_exceptions=True)
  File "C:\Users\gjselzer\micromamba\Lib\site-packages\napari\_qt\qt_event_loop.py", line 408, in run
    with (
  File "C:\Users\gjselzer\micromamba\Lib\contextlib.py", line 144, in __exit__
    next(self.gen)
  File "C:\Users\gjselzer\micromamba\Lib\site-packages\napari\_qt\utils.py", line 393, in _maybe_allow_interrupt
    old_sigint_handler(*handler_args)
KeyboardInterrupt

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions