Re: "disconnecting properly" in tests still hangs on macOS

Chris Withers <[email protected]>
Newsgroups gmane.comp.python.twisted
Message-ID <[email protected]>
On 14/11/2018 13:41, exvito here wrote:
> 
> Chris,
> 
> I played with this for a bit and quickly reproduced the "server side disconnect never seems to happen" behaviour you described, on my system running macOS 10.12.6 and Twisted 18.9.0 using the SelectReactor.
> 
> Suspecting of an eventual race condition between "server stop listen" and "server disconnect", I tried this variation of tearDown which seems to work reliably:
> 
>      @defer.inlineCallbacks
>      def tearDown(self):
>          self.clientConnection.disconnect()
>          yield defer.gatherResults([self.clientDisconnected, self.serverDisconnected])
>          yield defer.maybeDeferred(self.serverPort.stopListening)
> 
> Do I have any motive to suspect such race condition? No, but after ensuring "disconnect first, stop listening later", things work much better here.
> 
> Also tested the CFReactor and KQueueReactor: CFReactor seems to exhibit a similar behaviour (original code hangs every now and then on cleanup, my code works); KQueueReactor always hangs on cleanup with the original code, and works reliably with my code.

Thanks, this has worked flawlessly!

cheers,

Chris

_______________________________________________
Twisted-Python mailing list
[email protected]
https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.