Please sign in to comment.
Fix deadlock in geometry validation
Fix a deadlock in geometry validation. This happens when the mainthread "waits for finished" of a checker thread. What happened in this case was, that the main thread canceled the feedback and waited for any jobs to finish. If a job was waiting for a feature source (or something else to be executed on the main thread) this resulted in a mighty deadlock. What we do here is that we regularly check if we ought to cancel while waiting for our slot on the main thread and can bail out if we should cancel before the main thread gets around to take care of our function. The difference is, we still execute the code on the background thread and make sure that the main thread is not doing anything during this time to avoid working on the same data structures in parallel.
- Loading branch information
Showing with 81 additions and 15 deletions.
- +2 −1 python/analysis/auto_generated/vector/geometry_checker/qgsfeaturepool.sip.in
- +5 −5 src/analysis/vector/geometry_checker/qgsfeaturepool.cpp
- +4 −2 src/analysis/vector/geometry_checker/qgsfeaturepool.h
- +1 −1 src/analysis/vector/geometry_checker/qgsgeometrymissingvertexcheck.cpp
- +64 −1 src/core/qgsthreadingutils.h
- +4 −4 src/core/qgsvectorlayerutils.cpp
- +1 −1 src/core/qgsvectorlayerutils.h