Esempio n. 1
0
    def testProcessDiesAfterBeingTracked(self):
        p = Popen(["sleep", "1"])
        zombiereaper.autoReapPID(p.pid)
        # wait for the grim reaper to arrive
        sleep(4)

        # Throws error because pid is not found or is not child
        self.assertRaises(OSError, os.waitpid, p.pid, os.WNOHANG)
Esempio n. 2
0
    def testProcessDiesAfterBeingTracked(self):
        p = Popen(["sleep", "1"])
        zombiereaper.autoReapPID(p.pid)
        # wait for the grim reaper to arrive
        sleep(4)

        # Throws error because pid is not found or is not child
        self.assertRaises(OSError, os.waitpid, p.pid, os.WNOHANG)
Esempio n. 3
0
    def testProcessDiedBeforeBeingTracked(self):
        p = Popen(["sleep", "0"])
        # wait for the process to die
        sleep(1)

        zombiereaper.autoReapPID(p.pid)

        # Throws error because pid is not found or is not child
        self.assertRaises(OSError, os.waitpid, p.pid, os.WNOHANG)
Esempio n. 4
0
    def testProcessDiedBeforeBeingTracked(self):
        p = Popen(["sleep", "0"])
        # wait for the process to die
        sleep(1)

        zombiereaper.autoReapPID(p.pid)

        # Throws error because pid is not found or is not child
        self.assertRaises(OSError, os.waitpid, p.pid, os.WNOHANG)
Esempio n. 5
0
File: utils.py Progetto: mykaul/vdsm
def terminating(proc):
    try:
        yield proc
    finally:
        try:
            if proc.poll() is None:
                logging.debug('Terminating process pid=%d' % proc.pid)
                proc.kill()
                if proc.poll() is None:
                    zombiereaper.autoReapPID(proc.pid)
        except Exception:
            logging.exception('Failed to kill process %d' % proc.pid)
Esempio n. 6
0
File: v2v.py Progetto: fancyKai/vdsm
 def _abort(self):
     self._aborted = True
     if self._proc.returncode is None:
         logging.debug('Job %r killing virt-v2v process', self._id)
         try:
             self._proc.kill()
         except OSError as e:
             if e.errno != errno.ESRCH:
                 raise
             logging.debug('Job %r virt-v2v process not running', self._id)
         else:
             logging.debug('Job %r virt-v2v process was killed', self._id)
         finally:
             zombiereaper.autoReapPID(self._proc.pid)
Esempio n. 7
0
File: v2v.py Progetto: fancyKai/vdsm
 def _abort(self):
     self._aborted = True
     if self._proc.returncode is None:
         logging.debug('Job %r killing virt-v2v process', self._id)
         try:
             self._proc.kill()
         except OSError as e:
             if e.errno != errno.ESRCH:
                 raise
             logging.debug('Job %r virt-v2v process not running',
                           self._id)
         else:
             logging.debug('Job %r virt-v2v process was killed',
                           self._id)
         finally:
             zombiereaper.autoReapPID(self._proc.pid)
Esempio n. 8
0
File: hba.py Progetto: kanalun/vdsm
def _rescan():
    """
    Called from supervdsm to perform rescan as root.
    """
    timeout = config.getint('irs', 'scsi_rescan_maximal_timeout')

    proc = commands.execCmd([constants.EXT_FC_SCAN], sync=False,
                            execCmdLogger=log)
    try:
        proc.wait(timeout)
    finally:
        if proc.returncode is None:
            zombiereaper.autoReapPID(proc.pid)
            raise Error("Timeout scanning (pid=%s)" % proc.pid)
        elif proc.returncode != 0:
            stderr = proc.stderr.read(512)
            raise Error("Scan failed: %r" % stderr)
Esempio n. 9
0
def _rescan():
    """
    Called from supervdsm to perform rescan as root.
    """
    timeout = config.getint('irs', 'scsi_rescan_maximal_timeout')

    proc = commands.execCmd([constants.EXT_FC_SCAN], sync=False,
                            execCmdLogger=log)
    try:
        proc.wait(timeout)
    finally:
        if proc.returncode is None:
            zombiereaper.autoReapPID(proc.pid)
            raise Error("Timeout scanning (pid=%s)" % proc.pid)
        elif proc.returncode != 0:
            stderr = proc.stderr.read(512)
            raise Error("Scan failed: %r" % stderr)
Esempio n. 10
0
    def stop(self):
        try:
            os.kill(self.process.pid, signal.SIGKILL)
        except:
            pass

        self.process.poll()
        # Don't try to read if the process is in D state
        if (self.process.returncode is not None and
                self.process.returncode != 0):
            err = self.process.stderr.read()
            out = self.process.stdout.read()
            self.log.debug("Pool handler existed, OUT: '%s' ERR: '%s'",
                           out, err)

        try:
            zombiereaper.autoReapPID(self.process.pid)
        except AttributeError:
            if zombiereaper is not None:
                raise
Esempio n. 11
0
 def __del__(self):
     if self._proc.returncode is None:
         zombiereaper.autoReapPID(self._proc.pid)
Esempio n. 12
0
 def __del__(self):
     if self._proc.returncode is None:
         zombiereaper.autoReapPID(self._proc.pid)