def wait_for_idle(self, seconds_to_wait=None): """Wait for session to go to idle status. Sleep meanwhile. Parameters: seconds_to_wait : number of seconds to wait before giving up. """ if seconds_to_wait is None: seconds_to_wait = self._wait_for_idle_timeout_seconds retries = 1 while True: self.refresh_status_and_info() if self.status == constants.IDLE_SESSION_STATUS: return if self.status in constants.FINAL_STATUS: error = u"Session {} unexpectedly reached final status '{}'."\ .format(self.id, self.status) self.logger.error(error) raise LivyUnexpectedStatusException(u'{} See logs:\n{}'.format( error, self.get_logs())) if seconds_to_wait <= 0.0: error = u"Session {} did not reach idle status in time. Current status is {}."\ .format(self.id, self.status) self.logger.error(error) raise LivyClientTimeoutException(error) if constants.YARN_RESOURCE_LIMIT_MSG in self.session_info and \ not self._printed_resource_warning: self.ipython_display.send_error(constants.RESOURCE_LIMIT_WARNING\ .format(conf.resource_limit_mitigation_suggestion())) self._printed_resource_warning = True start_time = time() sleep_time = self._policy.seconds_to_sleep(retries) retries += 1 self.logger.debug( u"Session {} in state {}. Sleeping {} seconds.".format( self.id, self.status, sleep_time)) sleep(sleep_time) seconds_to_wait -= time() - start_time
def wait_for_idle(self, seconds_to_wait=None): """Wait for session to go to idle status. Sleep meanwhile. Calls done every status_sleep_seconds as indicated by the constructor. Parameters: seconds_to_wait : number of seconds to wait before giving up. """ if seconds_to_wait is None: seconds_to_wait = self._wait_for_idle_timeout_seconds while True: self.refresh_status_and_info() if self.status == constants.IDLE_SESSION_STATUS: return if self.status in constants.FINAL_STATUS: error = u"Session {} unexpectedly reached final status '{}'."\ .format(self.id, self.status) self.logger.error(error) raise LivyUnexpectedStatusException(u'{} See logs:\n{}'.format(error, self.get_logs())) if seconds_to_wait <= 0.0: error = u"Session {} did not reach idle status in time. Current status is {}."\ .format(self.id, self.status) self.logger.error(error) raise LivyClientTimeoutException(error) if constants.YARN_RESOURCE_LIMIT_MSG in self.session_info and \ not self._printed_resource_warning: self.ipython_display.send_error(constants.RESOURCE_LIMIT_WARNING\ .format(conf.resource_limit_mitigation_suggestion())) self._printed_resource_warning = True start_time = time() self.logger.debug(u"Session {} in state {}. Sleeping {} seconds." .format(self.id, self.status, self._status_sleep_seconds)) sleep(self._status_sleep_seconds) seconds_to_wait -= time() - start_time