[FIX] owlouvainclustering: Fix race conditions #3322
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue
There are race conditions in the Louvain clustering widget.
The
pca_projection
,graph
andpartitions
attributes are accessed and set directly from threads. In particular from the already 'cancelled' jobs. The code does not wait for cancelled jobs to finish, but they do modify the computed partial results. This can lead to undefined final resultson the output.
I can trigger this reliably by:
File: wdbc.tab
Louvain Clustering (both):
Python script contents:
In one of the Louvain clustering widgets tab to k neighbors spin box and enter 50, then quickly press down key on the keyboard a few times then even quicker enter 10 (you might copy 10 to clipboard and just paste it).
Description of changes
Refactor the code to eliminate race conditions in the access/setting of
pca_projection
,graph
andpartitions
.Limit the number of executing tasks to one.
Includes