def handle_activity_task_completed(self, event: HistoryEvent): attr = event.activity_task_completed_event_attributes if self.decider.handle_activity_task_closed(attr.scheduled_event_id): future = self.scheduled_activities.get(attr.scheduled_event_id) if future: self.scheduled_activities.pop(attr.scheduled_event_id) future.set_result(attr.result) else: raise NonDeterministicWorkflowException( f"Trying to complete activity event {attr.scheduled_event_id} that is not in scheduled_activities")
def handle_activity_task_timed_out(self, event: HistoryEvent): attr = event.activity_task_timed_out_event_attributes if self.decider.handle_activity_task_closed(attr.scheduled_event_id): future = self.scheduled_activities.get(attr.scheduled_event_id) if future: self.scheduled_activities.pop(attr.scheduled_event_id) ex = ActivityTaskTimeoutException(event.event_id, attr.timeout_type, attr.details) future.set_exception(ex) else: raise NonDeterministicWorkflowException( f"Trying to complete activity event {attr.scheduled_event_id} that is not in scheduled_activities")
def handle_activity_task_failed(self, event: HistoryEvent): attr = event.activity_task_failed_event_attributes if self.decider.handle_activity_task_closed(attr.scheduled_event_id): future = self.scheduled_activities.get(attr.scheduled_event_id) if future: self.scheduled_activities.pop(attr.scheduled_event_id) # TODO: attr.reason - what should we do with it? ex = deserialize_exception(attr.details) future.set_exception(ex) else: raise NonDeterministicWorkflowException( f"Trying to complete activity event {attr.scheduled_event_id} that is not in scheduled_activities")
def get_decision(self, decision_id: DecisionId) -> DecisionStateMachine: result: DecisionStateMachine = self.decisions.get(decision_id) if not result: raise NonDeterministicWorkflowException(f"Unknown {decision_id}.") return result