Revision 965d0e5b
b/lib/utils.py | ||
---|---|---|
566 | 566 |
while True: |
567 | 567 |
try: |
568 | 568 |
return fn(*args, **kwargs) |
569 |
except (EnvironmentError, socket.error), err:
|
|
569 |
except EnvironmentError, err:
|
|
570 | 570 |
if err.errno != errno.EINTR: |
571 | 571 |
raise |
572 |
except select.error, err: |
|
572 |
except (socket.error, select.error), err: |
|
573 |
# In python 2.6 and above select.error is an IOError, so it's handled |
|
574 |
# above, in 2.5 and below it's not, and it's handled here. |
|
573 | 575 |
if not (err.args and err.args[0] == errno.EINTR): |
574 | 576 |
raise |
575 | 577 |
|
... | ... | |
3001 | 3003 |
""" |
3002 | 3004 |
try: |
3003 | 3005 |
return fn(*args, **kwargs) |
3004 |
except (EnvironmentError, socket.error), err:
|
|
3006 |
except EnvironmentError, err:
|
|
3005 | 3007 |
if err.errno != errno.EINTR: |
3006 | 3008 |
raise |
3007 |
except select.error, err: |
|
3009 |
except (select.error, socket.error), err: |
|
3010 |
# In python 2.6 and above select.error is an IOError, so it's handled |
|
3011 |
# above, in 2.5 and below it's not, and it's handled here. |
|
3008 | 3012 |
if not (err.args and err.args[0] == errno.EINTR): |
3009 | 3013 |
raise |
3010 | 3014 |
|
b/test/ganeti.utils_unittest.py | ||
---|---|---|
2224 | 2224 |
|
2225 | 2225 |
def testIgnoreSignals(self): |
2226 | 2226 |
sock_err_intr = socket.error(errno.EINTR, "Message") |
2227 |
sock_err_intr.errno = errno.EINTR |
|
2228 | 2227 |
sock_err_inval = socket.error(errno.EINVAL, "Message") |
2229 |
sock_err_inval.errno = errno.EINVAL |
|
2230 | 2228 |
|
2231 | 2229 |
env_err_intr = EnvironmentError(errno.EINTR, "Message") |
2232 | 2230 |
env_err_inval = EnvironmentError(errno.EINVAL, "Message") |
Also available in: Unified diff