Skip to content

test_creatsubdatasets: RuntimeError: ThreadedRunner.run() was re-entered #7138

Closed
@yarikoptic

Description

@yarikoptic

spotted in the recent build on OSX using snapshot version of git-annex build:

https://github.com/datalad/datalad/actions/runs/3379647930/jobs/5611473605

>       assert_raises(IncompleteResultsError, list, ProducerConsumer(paths[::-1], create_, jobs=5))

../../../../hostedtoolcache/Python/3.7.15/x64/lib/python3.7/site-packages/datalad/support/tests/test_parallel.py:129: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../../../hostedtoolcache/Python/3.7.15/x64/lib/python3.7/site-packages/datalad/support/parallel.py:265: in __iter__
    yield from self._iter_threads(self._jobs)
../../../../hostedtoolcache/Python/3.7.15/x64/lib/python3.7/site-packages/datalad/support/parallel.py:417: in _iter_threads
    self.shutdown(force=True, exception=self._producer_exception or interrupted_by_exception)
../../../../hostedtoolcache/Python/3.7.15/x64/lib/python3.7/site-packages/datalad/support/parallel.py:233: in shutdown
    raise exception
../../../../hostedtoolcache/Python/3.7.15/x64/lib/python3.7/site-packages/datalad/support/parallel.py:401: in _iter_threads
    done_useful |= self._pop_done_futures(lgr)
../../../../hostedtoolcache/Python/3.7.15/x64/lib/python3.7/site-packages/datalad/support/parallel.py:463: in _pop_done_futures
    raise exception
../../../../hostedtoolcache/Python/3.7.15/x64/lib/python3.7/concurrent/futures/thread.py:57: in run
    result = self.fn(*self.args, **self.kwargs)
../../../../hostedtoolcache/Python/3.7.15/x64/lib/python3.7/site-packages/datalad/support/parallel.py:329: in consumer_worker
    for r in res:
../../../../hostedtoolcache/Python/3.7.15/x64/lib/python3.7/site-packages/datalad/interface/utils.py:452: in _execute_command_
    allkwargs):
../../../../hostedtoolcache/Python/3.7.15/x64/lib/python3.7/site-packages/datalad/interface/utils.py:619: in _process_results
    for res in results:
../../../../hostedtoolcache/Python/3.7.15/x64/lib/python3.7/site-packages/datalad/core/local/create.py:291: in __call__
    paths=[check_path.relative_to(parentds_path)])
../../../../hostedtoolcache/Python/3.7.15/x64/lib/python3.7/site-packages/datalad/support/gitrepo.py:2874: in status
    eval_submodule_state=eval_submodule_state)
../../../../hostedtoolcache/Python/3.7.15/x64/lib/python3.7/site-packages/datalad/support/gitrepo.py:2997: in diffstatus
    from_state = self.get_content_info(paths=paths, ref=fr)
../../../../hostedtoolcache/Python/3.7.15/x64/lib/python3.7/site-packages/datalad/support/gitrepo.py:2767: in get_content_info
    read_only=True)
../../../../hostedtoolcache/Python/3.7.15/x64/lib/python3.7/site-packages/datalad/dataset/gitrepo.py:461: in call_git
    keep_ends=True))
../../../../hostedtoolcache/Python/3.7.15/x64/lib/python3.7/site-packages/datalad/dataset/gitrepo.py:522: in call_git_items_
    sep=sep):
../../../../hostedtoolcache/Python/3.7.15/x64/lib/python3.7/site-packages/datalad/dataset/gitrepo.py:355: in _generator_call_git
    for file_no, content in generator:
../../../../hostedtoolcache/Python/3.7.15/x64/lib/python3.7/site-packages/datalad/runner/gitrunner.py:305: in run_on_filelist_chunks_items_
    **kwargs):
../../../../hostedtoolcache/Python/3.7.15/x64/lib/python3.7/site-packages/datalad/runner/gitrunner.py:189: in _get_chunked_results
    **kwargs)
../../../../hostedtoolcache/Python/3.7.15/x64/lib/python3.7/site-packages/datalad/runner/runner.py:194: in run
    results_or_iterator = self.threaded_runner.run()
../../../../hostedtoolcache/Python/3.7.15/x64/lib/python3.7/site-packages/datalad/runner/nonasyncrunner.py:320: in run
    return self._locked_run()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    def _locked_run(self) -> dict | _ResultGenerator:
        if self.generator is not None:
>           raise RuntimeError("ThreadedRunner.run() was re-entered")
E           RuntimeError: ThreadedRunner.run() was re-entered

../../../../hostedtoolcache/Python/3.7.15/x64/lib/python3.7/site-packages/datalad/runner/nonasyncrunner.py:324: RuntimeError

---------- coverage: platform darwin, python 3.7.15-final-0 ----------
Coverage XML written to file coverage.xml

=========================== short test summary info ============================
FAILED ../tests/test_parallel.py::test_creatsubdatasets - RuntimeError: ThreadedRunner.run() was re-entered
============ 1 failed, 392 passed, 35 skipped in 3114.32s (0:51:54) ============

and that exception was seen raised (test seems to fail or error also for other reasons in the past, so grepping for the exception)

(git)smaug:/mnt/datasets/datalad/ci/logs/2022[master]git
$> datalad foreach-dataset --o-s relpath git grep 'ThreadedRunner.run() was re-entered'                                      
06/02/pr/6737/60b6f94/appveyor-8048-failed/o7ip9u3udu7odsg6.txt:[00:15:51]     raise RuntimeError("ThreadedRunner.run() was re-entered")                                                                                                                           
06/02/pr/6737/60b6f94/appveyor-8048-failed/o7ip9u3udu7odsg6.txt:[00:15:51] RuntimeError: ThreadedRunner.run() was re-entered
06/02/pr/6737/abbf61b/appveyor-8049-failed/fla2okr02r6snseh.txt:[00:17:18]     raise RuntimeError("ThreadedRunner.run() was re-entered")
06/02/pr/6737/abbf61b/appveyor-8049-failed/fla2okr02r6snseh.txt:[00:17:18] RuntimeError: ThreadedRunner.run() was re-entered
06/03/pr/6737/81f8b2d/appveyor-8059-failed/61o073tsjurpnalc.txt:[00:14:43]     raise RuntimeError("ThreadedRunner.run() was re-entered")
06/03/pr/6737/81f8b2d/appveyor-8059-failed/61o073tsjurpnalc.txt:[00:14:43] RuntimeError: ThreadedRunner.run() was re-entered
06/03/pr/6737/a4519d8/github-Test on macOS-3326-failed/2_test (snapshot).txt:2022-06-03T09:42:09.4228590Z     raise RuntimeError("ThreadedRunner.run() was re-entered")
06/03/pr/6737/a4519d8/github-Test on macOS-3326-failed/2_test (snapshot).txt:2022-06-03T09:42:09.4228990Z RuntimeError: ThreadedRunner.run() was re-entered
06/03/pr/6737/a4519d8/github-Test on macOS-3326-failed/test (snapshot)/8_Run tests.txt:2022-06-03T09:42:09.4228590Z     raise RuntimeError("ThreadedRunner.run() was re-entered")
06/03/pr/6737/a4519d8/github-Test on macOS-3326-failed/test (snapshot)/8_Run tests.txt:2022-06-03T09:42:09.4228990Z RuntimeError: ThreadedRunner.run() was re-entered
06/03/pr/6740/d6f1cdd/appveyor-8060-failed/vf6voxcyv67lwaox.txt:[00:03:16]     raise RuntimeError("ThreadedRunner.run() was re-entered")
06/03/pr/6740/d6f1cdd/appveyor-8060-failed/vf6voxcyv67lwaox.txt:[00:03:16] RuntimeError: ThreadedRunner.run() was re-entered
09/19/push/maint/27c18e8/appveyor-8543-failed/4endjtn7v53adf2h.txt:[00:17:12] >           raise RuntimeError("ThreadedRunner.run() was re-entered")                                                                                                                
09/19/push/maint/27c18e8/appveyor-8543-failed/4endjtn7v53adf2h.txt:[00:17:12] E           RuntimeError: ThreadedRunner.run() was re-entered
09/19/push/maint/27c18e8/appveyor-8543-failed/4endjtn7v53adf2h.txt:[00:17:12] FAILED ../datalad/support/tests/test_parallel.py::test_creatsubdatasets - RuntimeError: ThreadedRunner.run() was re-entered
10/12/pr/7084/44d7557/appveyor-8646-failed/hsb8f27cmg1m57g0.txt:[00:19:56] >           raise RuntimeError("ThreadedRunner.run() was re-entered")                                                                                                                   
10/12/pr/7084/44d7557/appveyor-8646-failed/hsb8f27cmg1m57g0.txt:[00:19:56] E           RuntimeError: ThreadedRunner.run() was re-entered
10/12/pr/7084/44d7557/appveyor-8646-failed/hsb8f27cmg1m57g0.txt:[00:19:56] FAILED ../datalad/support/tests/test_parallel.py::test_creatsubdatasets - RuntimeError: ThreadedRunner.run() was re-entered
10/24/pr/7111/ca436bf/github-Test on macOS-3958-failed/1_test (brew).txt:2022-10-24T19:12:27.9900650Z >           raise RuntimeError("ThreadedRunner.run() was re-entered")
10/24/pr/7111/ca436bf/github-Test on macOS-3958-failed/1_test (brew).txt:2022-10-24T19:12:27.9901570Z E           RuntimeError: ThreadedRunner.run() was re-entered
10/24/pr/7111/ca436bf/github-Test on macOS-3958-failed/test (brew)/8_Run tests.txt:2022-10-24T19:12:27.9900650Z >           raise RuntimeError("ThreadedRunner.run() was re-entered")
10/24/pr/7111/ca436bf/github-Test on macOS-3958-failed/test (brew)/8_Run tests.txt:2022-10-24T19:12:27.9901560Z E           RuntimeError: ThreadedRunner.run() was re-entered
10/24/pr/UNK/ca436bf/github-Test on macOS-3958-failed/1_test (brew).txt:2022-10-24T19:12:27.9900650Z >           raise RuntimeError("ThreadedRunner.run() was re-entered")
10/24/pr/UNK/ca436bf/github-Test on macOS-3958-failed/1_test (brew).txt:2022-10-24T19:12:27.9901570Z E           RuntimeError: ThreadedRunner.run() was re-entered
10/24/pr/UNK/ca436bf/github-Test on macOS-3958-failed/test (brew)/8_Run tests.txt:2022-10-24T19:12:27.9900650Z >           raise RuntimeError("ThreadedRunner.run() was re-entered")
10/24/pr/UNK/ca436bf/github-Test on macOS-3958-failed/test (brew)/8_Run tests.txt:2022-10-24T19:12:27.9901560Z E           RuntimeError: ThreadedRunner.run() was re-entered
datalad foreach-dataset --o-s relpath git grep   57.95s user 48.87s system 461% cpu 23.163 total  

so happened on OSX but also on appveyor on debian/ubuntu:

$> datalad foreach-dataset --o-s relpath git grep -l 'ThreadedRunner.run() was re-entered' | grep -v macOS | xargs grep -e '## system' -A1 
06/02/pr/6737/60b6f94/appveyor-8048-failed/o7ip9u3udu7odsg6.txt:[00:02:38] ## system 
06/02/pr/6737/60b6f94/appveyor-8048-failed/o7ip9u3udu7odsg6.txt-[00:02:38]   - distribution: debian/bullseye/sid
--
06/02/pr/6737/abbf61b/appveyor-8049-failed/fla2okr02r6snseh.txt:[00:02:30] ## system 
06/02/pr/6737/abbf61b/appveyor-8049-failed/fla2okr02r6snseh.txt-[00:02:30]   - distribution: debian/bullseye/sid
--
06/03/pr/6737/81f8b2d/appveyor-8059-failed/61o073tsjurpnalc.txt:[00:02:54] ## system 
06/03/pr/6737/81f8b2d/appveyor-8059-failed/61o073tsjurpnalc.txt-[00:02:54]   - distribution: debian/bullseye/sid
--
06/03/pr/6740/d6f1cdd/appveyor-8060-failed/vf6voxcyv67lwaox.txt:[00:02:55] ## system 
06/03/pr/6740/d6f1cdd/appveyor-8060-failed/vf6voxcyv67lwaox.txt-[00:02:55]   - distribution: debian/bullseye/sid
--
09/19/push/maint/27c18e8/appveyor-8543-failed/4endjtn7v53adf2h.txt:[00:02:02] ## system 
09/19/push/maint/27c18e8/appveyor-8543-failed/4endjtn7v53adf2h.txt-[00:02:02]   - distribution: ubuntu/20.04/focal
--
10/12/pr/7084/44d7557/appveyor-8646-failed/hsb8f27cmg1m57g0.txt:[00:02:09] ## system 
10/12/pr/7084/44d7557/appveyor-8646-failed/hsb8f27cmg1m57g0.txt-[00:02:09]   - distribution: debian/bullseye/sid
datalad foreach-dataset --o-s relpath git grep -l   77.93s user 46.18s system 1042% cpu 11.904 total
grep --color=auto -d skip -v macOS  0.00s user 0.00s system 0% cpu 11.904 total
xargs grep -e '## system' -A1  0.01s user 0.00s system 0% cpu 11.909 total

edit: and it was on pythons 3.7.12, 3.7.13, and 3.8.10

Metadata

Metadata

Labels

spurious-test-failureTests that fail unreliablytestsAdd or improve existing tests

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions