[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [stem/master] Fix stem.descriptor.remote deadlock
commit 02f74f44f09efa9f854f830ae2a2f28514040e1d
Author: Damian Johnson <atagar@xxxxxxxxxxxxxx>
Date: Tue Jul 21 17:52:44 2020 -0700
Fix stem.descriptor.remote deadlock
Oops! While writing our Synchronous class I made our Query directly stop its
loop, ending its loop thread. Our class internally expects our thread attribute
to be None when its terminated, and as such wouldn't resume.
To reproduce the deadlock I used the following script...
import stem.descriptor.remote
downloader = stem.descriptor.remote.DescriptorDownloader(validate = True)
consensus_query = downloader.get_consensus()
consensus_query.run()
consensus = list(consensus_query)
print('count: %s' % len(consensus))
---
stem/descriptor/remote.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/stem/descriptor/remote.py b/stem/descriptor/remote.py
index 2c97c361..96ffceed 100644
--- a/stem/descriptor/remote.py
+++ b/stem/descriptor/remote.py
@@ -475,7 +475,7 @@ class Query(Synchronous):
return [desc async for desc in self._run(suppress)]
finally:
if stop:
- self._loop.call_soon_threadsafe(self._loop.stop)
+ self.stop()
async def _run(self, suppress: bool) -> AsyncIterator[stem.descriptor.Descriptor]:
with self._downloader_lock:
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits