report: bzr selftest hangs on win32
Andrew Bennetts
andrew at canonical.com
Thu Sep 21 04:20:00 BST 2006
On Wed, Sep 20, 2006 at 12:23:20PM +0300, Alexander Belchenko wrote:
> bzr.dev revno 2022 frozen for 0.11 release.
>
> Today I ran selftest on my win32 box.
>
> The selftest hang on test that name ends with
> '..._transport.WritableEndToEndTests.test_get_error_enoent'.
That's a serious problem. I might try installing python on my windows partition
and see if I can reproduce this.
> Failed tests so far:
>
> test_diff.TestDiffFiles.test_external_diff_binary FAIL 511ms
> test_merge_core.MergeTest.test_contents_merge2 FAIL 1973ms
> ..._transport.SFTPTransportTestRelative.test__remote_path FAIL 29ms
> ...transport.SSHVendorConnection.test_connection_paramikoERROR 1402ms
> ...smart_transport.BasicSmartTests.test_server_subprocessERROR 9ms
> ...art_transport.BasicSmartTests.test_smart_query_versionERROR 9ms
> ...ransport.TCPClientTests.test_get_client_from_transportERROR 9ms
> test_smart_transport.TCPClientTests.test_plausible_url ERROR 19ms
> test_smart_transport.TCPClientTests.test_probe_transport ERROR 9ms
Can you get the tracebacks for any of these? I suspect several of them are due
to this method in smart.py:
def get_url(self):
"""Return the url of the server"""
host, port = self._server_socket.getsockname()
# XXX: I think this is likely to break on windows -- self._homedir will
# have backslashes (and maybe a drive letter?).
# -- Andrew Bennetts, 2006-08-29
return "bzr://%s:%d%s" % (host, port, urlutils.escape(self._homedir))
But it would help to have more information.
[...]
> <bzrlib.transport.smart.SmartStreamServer object at 0x0276D2B0>
> terminating on exception (10035, 'The socket operation could not
> complete without blocking')
> Exception in thread smart-server-child:
> Traceback (most recent call last):
> File "E:\Python24\lib\threading.py", line 442, in __bootstrap
> self.run()
> File "E:\Python24\lib\threading.py", line 422, in run
> self.__target(*self.__args, **self.__kwargs)
> File "D:\Bazaar\sandbox\bzr.dev\bzrlib\transport\smart.py", line 306,
> in serve
> while self._serve_one_request() != False:
> File "D:\Bazaar\sandbox\bzr.dev\bzrlib\transport\smart.py", line 284,
> in _serve_one_request
> req_args = self._recv_tuple()
> File "D:\Bazaar\sandbox\bzr.dev\bzrlib\transport\smart.py", line 268,
> in _recv_tuple
> return _recv_tuple(self._in)
> File "D:\Bazaar\sandbox\bzr.dev\bzrlib\transport\smart.py", line 172,
> in _recv_tuple
> req_line = from_file.readline()
> File "E:\Python24\lib\socket.py", line 340, in readline
> data = self._sock.recv(self._rbufsize)
> error: (10035, 'The socket operation could not complete without blocking')
This is odd. It may be the cause of some of the test failures, but I'm not sure
why that socket would be non-blocking... oh, it's probably because of this line in
SmartTCPServer.__init__:
self._server_socket.settimeout(1)
socket.settimeout works internally by making the socket non-blocking.
Alexander, could you try commenting out that line and see if it helps?
> For me hang of selftest is a really big regression from 0.10 on win32.
I agree.
-Andrew.
More information about the bazaar
mailing list