예제 #1
0
    def stop_replica(self, replica):
        """
        Stop a replica if it is running.
        Otherwise raise an AlreadyStoppedError.
        """
        if replica not in self.procs:
            raise AlreadyStoppedError(replica)
        p = self.procs[replica]
        p.kill()
        p.wait()

        del self.procs[replica]
예제 #2
0
    def stop_replica(self, replica_id):
        """
        Stop a replica if it is running.
        Otherwise raise an AlreadyStoppedError.
        """
        if replica_id not in self.procs.keys():
            raise AlreadyStoppedError(replica_id)

        if self.is_existing and self.config.stop_replica_cmd is not None:
            self._stop_external_replica(replica_id)
        else:
            p = self.procs[replica_id]
            p.kill()
            p.wait()

        del self.procs[replica_id]
예제 #3
0
    def stop_replica(self, replica_id):
        """
        Stop a replica if it is running.
        Otherwise raise an AlreadyStoppedError.
        """
        if replica_id not in self.procs.keys():
            raise AlreadyStoppedError(replica_id)

        if self.is_existing and self.config.stop_replica_cmd is not None:
            self._stop_external_replica(replica_id)
        else:
            p = self.procs[replica_id]
            if os.environ.get('LEAKCHECK', "").lower() in set(["true", "on"]):
                p.terminate()
            else:
                p.kill()
            for fd in self.open_fds.get(replica_id, ()):
                fd.close()
            p.wait()

        del self.procs[replica_id]