Skip to content

Commit b06ffd7

Browse files
fix(core): no need to alway perform an os.stat(fd)
Performing an `os.stat(fd)` on Windows platform generate a crash because the "handler is not valid". `select` already handle this possible case and there is no actual need to perform any kind of check before. This was removed, and the linked test slightly changed.
1 parent d983066 commit b06ffd7

File tree

2 files changed

+6
-10
lines changed

2 files changed

+6
-10
lines changed

kazoo/handlers/utils.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
from collections import defaultdict
44
import errno
55
import functools
6-
import os
76
import select
87
import selectors
98
import ssl
@@ -349,7 +348,6 @@ def fileobj_to_fd(fileobj):
349348
raise TypeError("Invalid file object: " "{!r}".format(fileobj))
350349
if fd < 0:
351350
raise TypeError("Invalid file descriptor: {}".format(fd))
352-
os.fstat(fd)
353351
return fd
354352

355353

@@ -380,7 +378,11 @@ def selector_select(
380378

381379
selector = selectors_module.DefaultSelector()
382380
for fd, events in fd_events.items():
383-
selector.register(fd, events)
381+
try:
382+
selector.register(fd, events)
383+
except (ValueError, OSError) as e:
384+
# gevent can raise OSError
385+
raise ValueError('Invalid event mask or fd') from e
384386

385387
revents, wevents, xevents = [], [], []
386388
try:

kazoo/tests/test_selectors_select.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
to test the selector_select function.
44
"""
55

6-
import errno
76
import os
87
import socket
98
import sys
@@ -41,12 +40,7 @@ def test_errno(self):
4140
with open(__file__, "rb") as fp:
4241
fd = fp.fileno()
4342
fp.close()
44-
try:
45-
select([fd], [], [], 0)
46-
except OSError as err:
47-
self.assertEqual(err.errno, errno.EBADF)
48-
else:
49-
self.fail("exception not raised")
43+
self.assertRaises(ValueError, select, [fd], [], [], 0)
5044

5145
def test_returned_list_identity(self):
5246
# See issue #8329

0 commit comments

Comments
 (0)