Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
0.26, 0.27
-
None
Description
The python client uses select() to wait for socket activity. select() is used because it is available on most platforms. However, select() has a hard limit on the value of an file descriptor. If a socket is created that has a file descriptor > the value of FD_SETSIZE, the following exception is thrown:
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib64/python2.4/threading.py", line 442, in __bootstrap
self.run()
File "/usr/lib64/python2.4/threading.py", line 422, in run
self._target(*self.args, **self._kwargs)
File "/usr/lib/python2.4/site-packages/qpid/selector.py", line 119, in run
rd, wr, ex = select(self.reading, self.writing, (), timeout)
ValueError: filedescriptor out of range in select()
Note well: this is caused by the value of the fd, not the number of open fds. A process that has many files open, then attempts to create a qpid connection, could hit this problem.