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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions