Fix issues with stopping running job and status being reported incorrectly

This commit is contained in:
Brett Williams
2023-06-04 12:04:14 -05:00
parent c88480daea
commit fae30d3a6a

View File

@@ -116,6 +116,9 @@ class BaseRenderWorker(Base):
@status.getter @status.getter
def status(self): def status(self):
if self._status in [RenderStatus.RUNNING.value, RenderStatus.NOT_STARTED.value]:
if not hasattr(self, 'errors'):
return RenderStatus.CANCELLED
return string_to_status(self._status) return string_to_status(self._status)
def validate(self): def validate(self):
@@ -152,6 +155,10 @@ class BaseRenderWorker(Base):
def start(self): def start(self):
if self.status not in [RenderStatus.SCHEDULED, RenderStatus.NOT_STARTED]:
logger.error(f"Trying to start job with status: {self.status}")
return
if not os.path.exists(self.input_path): if not os.path.exists(self.input_path):
self.status = RenderStatus.ERROR self.status = RenderStatus.ERROR
msg = 'Cannot find input path: {}'.format(self.input_path) msg = 'Cannot find input path: {}'.format(self.input_path)
@@ -246,13 +253,6 @@ class BaseRenderWorker(Base):
def stop(self, is_error=False): def stop(self, is_error=False):
if hasattr(self, '__process'): if hasattr(self, '__process'):
try: try:
if self.status in [RenderStatus.RUNNING, RenderStatus.NOT_STARTED, RenderStatus.SCHEDULED]:
if is_error:
err_message = self.errors[-1] if self.errors else 'Unknown error'
logger.error(f"Halting render due to error: {err_message}")
self.status = RenderStatus.ERROR
else:
self.status = RenderStatus.CANCELLED
self.maximum_attempts = 0 self.maximum_attempts = 0
process = psutil.Process(self.__process.pid) process = psutil.Process(self.__process.pid)
for proc in process.children(recursive=True): for proc in process.children(recursive=True):
@@ -260,6 +260,13 @@ class BaseRenderWorker(Base):
process.kill() process.kill()
except Exception as e: except Exception as e:
logger.debug(f"Error stopping the process: {e}") logger.debug(f"Error stopping the process: {e}")
if self.status in [RenderStatus.RUNNING, RenderStatus.NOT_STARTED, RenderStatus.SCHEDULED]:
if is_error:
err_message = self.errors[-1] if self.errors else 'Unknown error'
logger.error(f"Halting render due to error: {err_message}")
self.status = RenderStatus.ERROR
else:
self.status = RenderStatus.CANCELLED
def percent_complete(self): def percent_complete(self):
return 0 return 0