New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
test_creatsubdatasets: RuntimeError: ThreadedRunner.run() was re-entered #7138
Comments
I see that we set |
We reset it in https://github.com/datalad/datalad/blob/HEAD/datalad/runner/nonasyncrunner.py#L128. So if the iterator is exhausted, the |
I will add some thread id logging and check the tests |
Just for clarification: The mutual exclusion has to be guaranteed as long as the thread that "owns" the In the non-generator case, mutual exclusion is automatically guaranteed by the lock that protects In the generator case, things are different because the generator exists in a non-trivial state, i.e. a non-exhausted state that still uses the Having said that, there is a possibility to protect the generator case with a lock as well. That might lead to long blocking of threads, but we could probably issue a warning in this case, It would also open the possbilitiy for deadlocks, if thread 1 holds the generator and waits for results from thread 2, but thread 2 is calling |
Issue fixed in |
spotted in the recent build on OSX using snapshot version of git-annex build:
https://github.com/datalad/datalad/actions/runs/3379647930/jobs/5611473605
and that exception was seen raised (test seems to fail or error also for other reasons in the past, so grepping for the exception)
so happened on OSX but also on appveyor on debian/ubuntu:
edit: and it was on pythons 3.7.12, 3.7.13, and 3.8.10
The text was updated successfully, but these errors were encountered: