Skip to content

Remove dependency on multiprocessing.Process to (down)load volumes #6

@olivierdelree

Description

@olivierdelree

Currently, the VolumeLoaderThread class uses multiprocessing.Process objects to download then load Volume objects. This works fine on platforms that create children processes through 'fork' (Linux) but causes pickling problems on other platforms which use 'spawn' (macOS, Windows).
Although macOS can be made to use 'fork', Windows cannot.

The functionality enabled by the use of processes (cancelling (down)loads) is actually disabled currently on the dev branch through the AtlasProgressDialog not allowing canceled/rejected signals to go through as that was causing some application deadlocks that were very difficult to debug.

The fix should therefore be twofold:

  1. Fix the pickling issues by moving away from using processes altogether and sticking to threads exclusively.
  2. Re-enable the ability to cancel (down)loads while maintaining a responsive GUI.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions