Dima Kuznetsov has posted comments on this change. Change subject: signals: Handle signals to non-main threads ......................................................................
Patch Set 10: (6 comments) http://gerrit.ovirt.org/#/c/29392/10/lib/vdsm/sigutils.py File lib/vdsm/sigutils.py: Line 74: ''' Line 75: This function acts like signal.pause(), it returns after a signal was Line 76: received and handled. Unlike signal.pause(), it will wake up even if other Line 77: thread caught the signal while this function was called. Line 78: A timeout can be specified to avoid waiting indefinitely. > Need to document the timeout - Python uses both seconds and milliseconds fo Done Line 79: Line 80: This function has to be called from the main thread. Line 81: ''' Line 82: Line 89: Line 90: try: Line 91: events = _signal_poller.poll(timeout) Line 92: if events: Line 93: _empty_pipe(_signal_read_fd) > Afaict, _empty_pipe() does not raise socket.error, so calling it misleading Done Line 94: except select.error as e: Line 95: if e[0] == errno.EINTR: Line 96: # We need to clean up the pipe Line 97: _empty_pipe(_signal_read_fd) Line 95: if e[0] == errno.EINTR: Line 96: # We need to clean up the pipe Line 97: _empty_pipe(_signal_read_fd) Line 98: else: Line 99: logging.exception('Received error while waiting for signal') > The check for events should be here: You're right! Line 100: Line 101: Line 102: def _empty_pipe(fd): Line 103: while True: Line 107: except OSError as e: Line 108: if e.errno != errno.EINTR: Line 109: if e.errno != errno.EAGAIN: Line 110: logging.exception('Received error while reading from pipe') Line 111: break > This is not clear. Lets make it simpler: Done http://gerrit.ovirt.org/#/c/29392/10/tests/sigutilsTests_child.py File tests/sigutilsTests_child.py: Line 1: #!/usr/bin/python -u > Lawyers love GPL boilerplate on every code file. Done Line 2: import os Line 3: import signal Line 4: import subprocess Line 5: import sys Line 28: Line 29: Line 30: def test_signal_to_thread(): Line 31: ''' Line 32: This tests checks the following scenario: > tests->test Done Line 33: * main thread is waiting for signal Line 34: * another thread is running a subprocess Line 35: * the subprocess exits before another thread dies Line 36: -- To view, visit http://gerrit.ovirt.org/29392 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5dbcd00cec22ef12f2b6253b016dcbd0aa889583 Gerrit-PatchSet: 10 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Dima Kuznetsov <[email protected]> Gerrit-Reviewer: Dan Kenigsberg <[email protected]> Gerrit-Reviewer: Dima Kuznetsov <[email protected]> Gerrit-Reviewer: Nir Soffer <[email protected]> Gerrit-Reviewer: Saggi Mizrahi <[email protected]> Gerrit-Reviewer: Yaniv Bronhaim <[email protected]> Gerrit-Reviewer: Yeela Kaplan <[email protected]> Gerrit-Reviewer: [email protected] Gerrit-Reviewer: oVirt Jenkins CI Server Gerrit-HasComments: Yes _______________________________________________ vdsm-patches mailing list [email protected] https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches
