When an exception happens within the session processor loop, record a… (#4638)

…nd move on

## What type of PR is this? (check all applicable)

- [ ] Refactor
- [ ] Feature
- [ ] Bug Fix
- [ ] Optimization
- [ ] Documentation Update
- [ ] Community Node Submission


## Have you discussed this change with the InvokeAI team?
- [ ] Yes
- [ ] No, because:

      
## Have you updated all relevant documentation?
- [ ] Yes
- [ ] No


## Description


## Related Tickets & Documents

<!--
For pull requests that relate or close an issue, please include them
below. 

For example having the text: "closes #1234" would connect the current
pull
request to issue 1234.  And when we merge the pull request, Github will
automatically close the issue.
-->

- Related Issue #
- Closes #

## QA Instructions, Screenshots, Recordings

<!-- 
Please provide steps on how to test changes, any hardware or 
software specifications as well as any other pertinent information. 
-->

## Added/updated tests?

- [ ] Yes
- [ ] No : _please replace this line with details on why tests
      have not been included_

## [optional] Are there any post deployment tasks we need to perform?
This commit is contained in:
Brandon 2023-09-21 11:32:57 -04:00 committed by GitHub
commit c5d0e65a24
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -92,30 +92,34 @@ class DefaultSessionProcessor(SessionProcessorBase):
self.__invoker.services.logger self.__invoker.services.logger
while not stop_event.is_set(): while not stop_event.is_set():
poll_now_event.clear() poll_now_event.clear()
try:
# do not dequeue if there is already a session running
if self.__queue_item is None and resume_event.is_set():
queue_item = self.__invoker.services.session_queue.dequeue()
# do not dequeue if there is already a session running if queue_item is not None:
if self.__queue_item is None and resume_event.is_set(): self.__invoker.services.logger.debug(f"Executing queue item {queue_item.item_id}")
queue_item = self.__invoker.services.session_queue.dequeue() self.__queue_item = queue_item
self.__invoker.services.graph_execution_manager.set(queue_item.session)
self.__invoker.invoke(
session_queue_batch_id=queue_item.batch_id,
session_queue_id=queue_item.queue_id,
session_queue_item_id=queue_item.item_id,
graph_execution_state=queue_item.session,
invoke_all=True,
)
queue_item = None
if queue_item is not None: if queue_item is None:
self.__invoker.services.logger.debug(f"Executing queue item {queue_item.item_id}") self.__invoker.services.logger.debug("Waiting for next polling interval or event")
self.__queue_item = queue_item poll_now_event.wait(POLLING_INTERVAL)
self.__invoker.services.graph_execution_manager.set(queue_item.session) continue
self.__invoker.invoke( except Exception as e:
session_queue_batch_id=queue_item.batch_id, self.__invoker.services.logger.error(f"Error in session processor: {e}")
session_queue_id=queue_item.queue_id,
session_queue_item_id=queue_item.item_id,
graph_execution_state=queue_item.session,
invoke_all=True,
)
queue_item = None
if queue_item is None:
self.__invoker.services.logger.debug("Waiting for next polling interval or event")
poll_now_event.wait(POLLING_INTERVAL) poll_now_event.wait(POLLING_INTERVAL)
continue continue
except Exception as e: except Exception as e:
self.__invoker.services.logger.error(f"Error in session processor: {e}") self.__invoker.services.logger.error(f"Fatal Error in session processor: {e}")
pass pass
finally: finally:
stop_event.clear() stop_event.clear()