Comment 5 for bug 626876

Revision history for this message
Vincent Ladeuil (vila) wrote :

> If it is an interaction with threads and sockets

Let's look at what is involved in that test then:

        self.start_server(ssh_server)

This will start a thread for the server and since it's threading server, one for each connection. Each of them have a socket.
Since we're using paramiko, that also means one thread per socket as per paramiko implementation.

Then we have:

        t.mkdir('foo')

This will also create a socket and its paramiko thread.

When the server receives the connection, it will start a subprocess and 3 threads for stdin, stdout and stderr each of them
associated with a pipe, so 3 file handles in the parent process and 3 file handles in the server process.

Paramiko use a 0.1 timeout for handling his sockets adding a lot of possible failures.

I can see a lot a *granularity* to add to this design to better track where the failures occur.

Or, come to think of it, I think the design is just to brittle to continue with and we'd better start again from scratch :)