def end(self): """This pants run is over, so stop tracking it. Note: If end() has been called once, subsequent calls are no-ops. """ if self._background_worker_pool: if self._aborted: self.log(Report.INFO, "Aborting background workers.") self._background_worker_pool.abort() else: self.log(Report.INFO, "Waiting for background workers to finish.") self._background_worker_pool.shutdown() self.end_workunit(self._background_root_workunit) SubprocPool.shutdown(self._aborted) # Run a dummy work unit to write out one last timestamp. with self.new_workunit("complete"): pass self.end_workunit(self._main_root_workunit) outcome = self._main_root_workunit.outcome() if self._background_root_workunit: outcome = min(outcome, self._background_root_workunit.outcome()) outcome_str = WorkUnit.outcome_string(outcome) log_level = RunTracker._log_levels[outcome] self.log(log_level, outcome_str) if self.run_info.get_info('outcome') is None: # If the goal is clean-all then the run info dir no longer exists, so ignore that error. self.run_info.add_info('outcome', outcome_str, ignore_errors=True) self.report.close() self.store_stats()
def end(self) -> ExitCode: """This pants run is over, so stop tracking it. Note: If end() has been called once, subsequent calls are no-ops. :return: PANTS_SUCCEEDED_EXIT_CODE or PANTS_FAILED_EXIT_CODE """ if self._end_memoized_result is not None: return self._end_memoized_result self.shutdown_worker_pool() self.end_workunit(self._main_root_workunit) outcome = self._main_root_workunit.outcome() if self._background_root_workunit: outcome = min(outcome, self._background_root_workunit.outcome()) outcome_str = WorkUnit.outcome_string(outcome) if self.run_info.get_info("outcome") is None: # If the goal is clean-all then the run info dir no longer exists, so ignore that error. self.run_info.add_info("outcome", outcome_str, ignore_errors=True) self.report.close() self.store_stats() run_failed = outcome in [WorkUnit.FAILURE, WorkUnit.ABORTED] result = PANTS_FAILED_EXIT_CODE if run_failed else PANTS_SUCCEEDED_EXIT_CODE self._end_memoized_result = result self.native.set_per_run_log_path(None) return self._end_memoized_result
def end(self): """This pants run is over, so stop tracking it. Note: If end() has been called once, subsequent calls are no-ops. :return: PANTS_SUCCEEDED_EXIT_CODE or PANTS_FAILED_EXIT_CODE """ if self._end_memoized_result is not None: return self._end_memoized_result if self._background_worker_pool: if self._aborted: self.log(Report.INFO, "Aborting background workers.") self._background_worker_pool.abort() else: self.log(Report.INFO, "Waiting for background workers to finish.") self._background_worker_pool.shutdown() self.end_workunit(self._background_root_workunit) self.shutdown_worker_pool() # Run a dummy work unit to write out one last timestamp. with self.new_workunit("complete"): pass self.end_workunit(self._main_root_workunit) outcome = self._main_root_workunit.outcome() if self._background_root_workunit: outcome = min(outcome, self._background_root_workunit.outcome()) outcome_str = WorkUnit.outcome_string(outcome) log_level = RunTracker._log_levels[outcome] self.log(log_level, outcome_str) if self.run_info.get_info('outcome') is None: # If the goal is clean-all then the run info dir no longer exists, so ignore that error. self.run_info.add_info('outcome', outcome_str, ignore_errors=True) if self._sorted_goal_infos and self.run_info.get_info( "computed_goals") is None: self.run_info.add_info( "computed_goals", self._v2_goal_rule_names + tuple(goal.goal.name for goal in self._sorted_goal_infos), stringify=False, # If the goal is clean-all then the run info dir no longer exists, so ignore that error. ignore_errors=True, ) if self._target_to_data: self.run_info.add_info('target_data', self._target_to_data) self.report.close() self.store_stats() run_failed = outcome in [WorkUnit.FAILURE, WorkUnit.ABORTED] result = PANTS_FAILED_EXIT_CODE if run_failed else PANTS_SUCCEEDED_EXIT_CODE self._end_memoized_result = result return self._end_memoized_result
def end(self): """This pants run is over, so stop tracking it. Note: If end() has been called once, subsequent calls are no-ops. """ if self._background_worker_pool: if self._aborted: self.log(Report.INFO, "Aborting background workers.") self._background_worker_pool.abort() else: self.log(Report.INFO, "Waiting for background workers to finish.") self._background_worker_pool.shutdown() self.report.end_workunit(self._background_root_workunit) self._background_root_workunit.end() if self._foreground_worker_pool: if self._aborted: self.log(Report.INFO, "Aborting foreground workers.") self._foreground_worker_pool.abort() else: self.log(Report.INFO, "Waiting for foreground workers to finish.") self._foreground_worker_pool.shutdown() SubprocPool.shutdown(self._aborted) self.report.end_workunit(self._main_root_workunit) self._main_root_workunit.end() outcome = self._main_root_workunit.outcome() if self._background_root_workunit: outcome = min(outcome, self._background_root_workunit.outcome()) outcome_str = WorkUnit.outcome_string(outcome) log_level = WorkUnit.choose_for_outcome(outcome, Report.ERROR, Report.ERROR, Report.WARN, Report.INFO, Report.INFO) self.log(log_level, outcome_str) if self.run_info.get_info('outcome') is None: try: self.run_info.add_info('outcome', outcome_str) except IOError: pass # If the goal is clean-all then the run info dir no longer exists... self.report.close() self.upload_stats()
def end(self): """This pants run is over, so stop tracking it. Note: If end() has been called once, subsequent calls are no-ops. :return: PANTS_SUCCEEDED_EXIT_CODE or PANTS_FAILED_EXIT_CODE """ if self._end_memoized_result is not None: return self._end_memoized_result if self._background_worker_pool: if self._aborted: self.log(Report.INFO, "Aborting background workers.") self._background_worker_pool.abort() else: self.log(Report.INFO, "Waiting for background workers to finish.") self._background_worker_pool.shutdown() self.end_workunit(self._background_root_workunit) self.shutdown_worker_pool() # Run a dummy work unit to write out one last timestamp. with self.new_workunit("complete"): pass self.end_workunit(self._main_root_workunit) outcome = self._main_root_workunit.outcome() if self._background_root_workunit: outcome = min(outcome, self._background_root_workunit.outcome()) outcome_str = WorkUnit.outcome_string(outcome) log_level = RunTracker._log_levels[outcome] self.log(log_level, outcome_str) if self.run_info.get_info('outcome') is None: # If the goal is clean-all then the run info dir no longer exists, so ignore that error. self.run_info.add_info('outcome', outcome_str, ignore_errors=True) if self._target_to_data: self.run_info.add_info('target_data', self._target_to_data) self.report.close() self.store_stats() run_failed = outcome in [WorkUnit.FAILURE, WorkUnit.ABORTED] result = PANTS_FAILED_EXIT_CODE if run_failed else PANTS_SUCCEEDED_EXIT_CODE self._end_memoized_result = result return self._end_memoized_result
def end(self) -> ExitCode: """This pants run is over, so stop tracking it. Note: If end() has been called once, subsequent calls are no-ops. :return: PANTS_SUCCEEDED_EXIT_CODE or PANTS_FAILED_EXIT_CODE """ if self._end_memoized_result is not None: return self._end_memoized_result self.shutdown_worker_pool() # Run a dummy work unit to write out one last timestamp. with self.new_workunit("complete"): pass self.end_workunit(self._main_root_workunit) outcome = self._main_root_workunit.outcome() if self._background_root_workunit: outcome = min(outcome, self._background_root_workunit.outcome()) outcome_str = WorkUnit.outcome_string(outcome) log_level = RunTracker._log_levels[outcome] self.log(log_level, outcome_str) if self.run_info.get_info("outcome") is None: # If the goal is clean-all then the run info dir no longer exists, so ignore that error. self.run_info.add_info("outcome", outcome_str, ignore_errors=True) if self._target_to_data: self.run_info.add_info("target_data", self._target_to_data) self.report.close() self.store_stats() run_failed = outcome in [WorkUnit.FAILURE, WorkUnit.ABORTED] result = PANTS_FAILED_EXIT_CODE if run_failed else PANTS_SUCCEEDED_EXIT_CODE self._end_memoized_result = result return self._end_memoized_result
def set_outcome(self, outcome): return sys.stderr.write('\nWorkUnit outcome: {}\n'.format(WorkUnit.outcome_string(outcome)))
def set_outcome(self, outcome): return sys.stderr.write('\nWorkUnit outcome: {}\n'.format( WorkUnit.outcome_string(outcome)))
def outcome_string(self, outcome): return WorkUnit.outcome_string(outcome)