Source: emel/memory/hybrid/sm.hpp
stateDiagram-v2
direction TB
[*] --> ready
ready --> reserve_kv : reserve_runtime [always] / begin_reserve_
reserve_kv --> reserve_kv_decision : completion_reserve_runtime_ [always] / exec_reserve_kv_
reserve_kv_decision --> reserve_recurrent : completion_reserve_runtime_ [kv_accepted_] / none
reserve_kv_decision --> errored : completion_reserve_runtime_ [kv_rejected_with_error_] / mark_error_from_kv_
reserve_kv_decision --> errored : completion_reserve_runtime_ [kv_rejected_without_error_] / mark_backend_error_
reserve_recurrent --> reserve_recurrent_decision : completion_reserve_runtime_ [always] / exec_reserve_recurrent_
reserve_recurrent_decision --> done : completion_reserve_runtime_ [recurrent_accepted_] / none
reserve_recurrent_decision --> errored : completion_reserve_runtime_ [recurrent_rejected_with_error_] / mark_error_from_recurrent_
reserve_recurrent_decision --> errored : completion_reserve_runtime_ [recurrent_rejected_without_error_] / mark_backend_error_
ready --> allocate_sequence_kv : allocate_sequence_runtime [always] / begin_allocate_sequence_
allocate_sequence_kv --> allocate_sequence_kv_decision : completion_allocate_sequence_runtime_ [always] / exec_allocate_sequence_kv_
allocate_sequence_kv_decision --> allocate_sequence_recurrent : completion_allocate_sequence_runtime_ [kv_accepted_] / none
allocate_sequence_kv_decision --> errored : completion_allocate_sequence_runtime_ [kv_rejected_with_error_] / mark_error_from_kv_
allocate_sequence_kv_decision --> errored : completion_allocate_sequence_runtime_ [kv_rejected_without_error_] / mark_backend_error_
allocate_sequence_recurrent --> allocate_sequence_recurrent_decision : completion_allocate_sequence_runtime_ [always] / exec_allocate_sequence_recurrent_
allocate_sequence_recurrent_decision --> done : completion_allocate_sequence_runtime_ [recurrent_accepted_] / none
allocate_sequence_recurrent_decision --> allocate_sequence_rollback_kv : completion_allocate_sequence_runtime_ [recurrent_rejected_any_] / exec_allocate_sequence_rollback_kv_
allocate_sequence_rollback_kv --> allocate_sequence_rollback_result_decision : completion_allocate_sequence_runtime_ [always] / none
allocate_sequence_rollback_result_decision --> allocate_sequence_recurrent_error_decision : completion_allocate_sequence_runtime_ [rollback_accepted_] / none
allocate_sequence_rollback_result_decision --> errored : completion_allocate_sequence_runtime_ [rollback_rejected_with_error_] / mark_error_from_rollback_
allocate_sequence_rollback_result_decision --> errored : completion_allocate_sequence_runtime_ [rollback_rejected_without_error_] / mark_internal_error_
allocate_sequence_rollback_result_decision --> errored : completion_allocate_sequence_runtime_ [always] / mark_internal_error_
allocate_sequence_recurrent_error_decision --> out_of_memory : completion_allocate_sequence_runtime_ [recurrent_rejected_out_of_memory_] / mark_out_of_memory_
allocate_sequence_recurrent_error_decision --> errored : completion_allocate_sequence_runtime_ [recurrent_rejected_backend_or_none_] / mark_backend_error_
allocate_sequence_recurrent_error_decision --> errored : completion_allocate_sequence_runtime_ [recurrent_rejected_non_backend_error_] / mark_error_from_recurrent_
allocate_sequence_recurrent_error_decision --> errored : completion_allocate_sequence_runtime_ [always] / mark_internal_error_
ready --> allocate_slots_kv : allocate_slots_runtime [always] / begin_allocate_slots_
allocate_slots_kv --> allocate_slots_kv_decision : completion_allocate_slots_runtime_ [always] / exec_allocate_slots_kv_
allocate_slots_kv_decision --> allocate_slots_recurrent : completion_allocate_slots_runtime_ [kv_accepted_] / none
allocate_slots_kv_decision --> out_of_memory : completion_allocate_slots_runtime_ [kv_rejected_out_of_memory_] / mark_out_of_memory_
allocate_slots_kv_decision --> errored : completion_allocate_slots_runtime_ [kv_rejected_backend_or_none_] / mark_backend_error_
allocate_slots_kv_decision --> errored : completion_allocate_slots_runtime_ [kv_rejected_non_backend_error_] / mark_error_from_kv_
allocate_slots_recurrent --> allocate_slots_recurrent_decision : completion_allocate_slots_runtime_ [always] / exec_allocate_slots_recurrent_
allocate_slots_recurrent_decision --> done : completion_allocate_slots_runtime_ [recurrent_accepted_] / none
allocate_slots_recurrent_decision --> allocate_slots_rollback_kv : completion_allocate_slots_runtime_ [recurrent_rejected_any_] / exec_allocate_slots_rollback_kv_
allocate_slots_rollback_kv --> allocate_slots_rollback_result_decision : completion_allocate_slots_runtime_ [always] / none
allocate_slots_rollback_result_decision --> allocate_slots_recurrent_error_decision : completion_allocate_slots_runtime_ [rollback_accepted_] / none
allocate_slots_rollback_result_decision --> errored : completion_allocate_slots_runtime_ [rollback_rejected_with_error_] / mark_error_from_rollback_
allocate_slots_rollback_result_decision --> errored : completion_allocate_slots_runtime_ [rollback_rejected_without_error_] / mark_internal_error_
allocate_slots_rollback_result_decision --> errored : completion_allocate_slots_runtime_ [always] / mark_internal_error_
allocate_slots_recurrent_error_decision --> out_of_memory : completion_allocate_slots_runtime_ [recurrent_rejected_out_of_memory_] / mark_out_of_memory_
allocate_slots_recurrent_error_decision --> errored : completion_allocate_slots_runtime_ [recurrent_rejected_backend_or_none_] / mark_backend_error_
allocate_slots_recurrent_error_decision --> errored : completion_allocate_slots_runtime_ [recurrent_rejected_non_backend_error_] / mark_error_from_recurrent_
allocate_slots_recurrent_error_decision --> errored : completion_allocate_slots_runtime_ [always] / mark_internal_error_
ready --> branch_sequence_kv : branch_sequence_runtime [always] / begin_branch_sequence_
branch_sequence_kv --> branch_sequence_kv_decision : completion_branch_sequence_runtime_ [always] / exec_branch_sequence_kv_
branch_sequence_kv_decision --> branch_sequence_recurrent : completion_branch_sequence_runtime_ [kv_accepted_] / none
branch_sequence_kv_decision --> out_of_memory : completion_branch_sequence_runtime_ [kv_rejected_out_of_memory_] / mark_out_of_memory_
branch_sequence_kv_decision --> errored : completion_branch_sequence_runtime_ [kv_rejected_backend_or_none_] / mark_backend_error_
branch_sequence_kv_decision --> errored : completion_branch_sequence_runtime_ [kv_rejected_non_backend_error_] / mark_error_from_kv_
branch_sequence_recurrent --> branch_sequence_recurrent_decision : completion_branch_sequence_runtime_ [always] / exec_branch_sequence_recurrent_
branch_sequence_recurrent_decision --> done : completion_branch_sequence_runtime_ [recurrent_accepted_] / none
branch_sequence_recurrent_decision --> branch_sequence_rollback_kv : completion_branch_sequence_runtime_ [recurrent_rejected_any_] / exec_branch_sequence_rollback_kv_
branch_sequence_rollback_kv --> branch_sequence_rollback_result_decision : completion_branch_sequence_runtime_ [always] / none
branch_sequence_rollback_result_decision --> branch_sequence_recurrent_error_decision : completion_branch_sequence_runtime_ [rollback_accepted_] / none
branch_sequence_rollback_result_decision --> errored : completion_branch_sequence_runtime_ [rollback_rejected_with_error_] / mark_error_from_rollback_
branch_sequence_rollback_result_decision --> errored : completion_branch_sequence_runtime_ [rollback_rejected_without_error_] / mark_internal_error_
branch_sequence_rollback_result_decision --> errored : completion_branch_sequence_runtime_ [always] / mark_internal_error_
branch_sequence_recurrent_error_decision --> out_of_memory : completion_branch_sequence_runtime_ [recurrent_rejected_out_of_memory_] / mark_out_of_memory_
branch_sequence_recurrent_error_decision --> errored : completion_branch_sequence_runtime_ [recurrent_rejected_backend_or_none_] / mark_backend_error_
branch_sequence_recurrent_error_decision --> errored : completion_branch_sequence_runtime_ [recurrent_rejected_non_backend_error_] / mark_error_from_recurrent_
branch_sequence_recurrent_error_decision --> errored : completion_branch_sequence_runtime_ [always] / mark_internal_error_
ready --> free_sequence_kv : free_sequence_runtime [always] / begin_free_sequence_
free_sequence_kv --> free_sequence_kv_decision : completion_free_sequence_runtime_ [always] / exec_free_sequence_kv_
free_sequence_kv_decision --> free_sequence_recurrent : completion_free_sequence_runtime_ [kv_accepted_] / none
free_sequence_kv_decision --> errored : completion_free_sequence_runtime_ [kv_rejected_with_error_] / mark_error_from_kv_
free_sequence_kv_decision --> errored : completion_free_sequence_runtime_ [kv_rejected_without_error_] / mark_backend_error_
free_sequence_recurrent --> free_sequence_recurrent_decision : completion_free_sequence_runtime_ [always] / exec_free_sequence_recurrent_
free_sequence_recurrent_decision --> done : completion_free_sequence_runtime_ [recurrent_accepted_] / none
free_sequence_recurrent_decision --> errored : completion_free_sequence_runtime_ [recurrent_rejected_with_error_] / mark_error_from_recurrent_
free_sequence_recurrent_decision --> errored : completion_free_sequence_runtime_ [recurrent_rejected_without_error_] / mark_backend_error_
ready --> rollback_slots_kv : rollback_slots_runtime [always] / begin_rollback_slots_
rollback_slots_kv --> rollback_slots_kv_decision : completion_rollback_slots_runtime_ [always] / exec_rollback_slots_kv_
rollback_slots_kv_decision --> rollback_slots_recurrent : completion_rollback_slots_runtime_ [kv_accepted_] / none
rollback_slots_kv_decision --> errored : completion_rollback_slots_runtime_ [kv_rejected_with_error_] / mark_error_from_kv_
rollback_slots_kv_decision --> errored : completion_rollback_slots_runtime_ [kv_rejected_without_error_] / mark_backend_error_
rollback_slots_recurrent --> rollback_slots_recurrent_decision : completion_rollback_slots_runtime_ [always] / exec_rollback_slots_recurrent_
rollback_slots_recurrent_decision --> done : completion_rollback_slots_runtime_ [recurrent_accepted_] / none
rollback_slots_recurrent_decision --> errored : completion_rollback_slots_runtime_ [recurrent_rejected_with_error_] / mark_error_from_recurrent_
rollback_slots_recurrent_decision --> errored : completion_rollback_slots_runtime_ [recurrent_rejected_without_error_] / mark_backend_error_
ready --> capture_request_decision : capture_view_runtime [always] / begin_capture_view_
capture_request_decision --> capture_kv : completion_capture_view_runtime_ [capture_request_valid_] / none
capture_request_decision --> errored : completion_capture_view_runtime_ [capture_request_invalid_] / mark_invalid_request_
capture_kv --> capture_kv_decision : completion_capture_view_runtime_ [always] / exec_capture_kv_
capture_kv_decision --> capture_recurrent : completion_capture_view_runtime_ [kv_accepted_] / none
capture_kv_decision --> errored : completion_capture_view_runtime_ [kv_rejected_with_error_] / mark_error_from_kv_
capture_kv_decision --> errored : completion_capture_view_runtime_ [kv_rejected_without_error_] / mark_backend_error_
capture_recurrent --> capture_recurrent_decision : completion_capture_view_runtime_ [always] / exec_capture_recurrent_
capture_recurrent_decision --> capture_merge : completion_capture_view_runtime_ [recurrent_accepted_] / none
capture_recurrent_decision --> errored : completion_capture_view_runtime_ [recurrent_rejected_with_error_] / mark_error_from_recurrent_
capture_recurrent_decision --> errored : completion_capture_view_runtime_ [recurrent_rejected_without_error_] / mark_backend_error_
capture_merge --> done : completion_capture_view_runtime_ [always] / merge_capture_snapshots_
done --> ready : completion_reserve_runtime_ [always] / publish_done_
out_of_memory --> ready : completion_reserve_runtime_ [always] / publish_error_
errored --> ready : completion_reserve_runtime_ [always] / publish_error_
done --> ready : completion_allocate_sequence_runtime_ [always] / publish_done_
out_of_memory --> ready : completion_allocate_sequence_runtime_ [always] / publish_error_
errored --> ready : completion_allocate_sequence_runtime_ [always] / publish_error_
done --> ready : completion_allocate_slots_runtime_ [always] / publish_done_
out_of_memory --> ready : completion_allocate_slots_runtime_ [always] / publish_error_
errored --> ready : completion_allocate_slots_runtime_ [always] / publish_error_
done --> ready : completion_branch_sequence_runtime_ [always] / publish_done_
out_of_memory --> ready : completion_branch_sequence_runtime_ [always] / publish_error_
errored --> ready : completion_branch_sequence_runtime_ [always] / publish_error_
done --> ready : completion_free_sequence_runtime_ [always] / publish_done_
out_of_memory --> ready : completion_free_sequence_runtime_ [always] / publish_error_
errored --> ready : completion_free_sequence_runtime_ [always] / publish_error_
done --> ready : completion_rollback_slots_runtime_ [always] / publish_done_
out_of_memory --> ready : completion_rollback_slots_runtime_ [always] / publish_error_
errored --> ready : completion_rollback_slots_runtime_ [always] / publish_error_
done --> ready : completion_capture_view_runtime_ [always] / publish_done_
out_of_memory --> ready : completion_capture_view_runtime_ [always] / publish_error_
errored --> ready : completion_capture_view_runtime_ [always] / publish_error_
ready --> ready : _ [always] / on_unexpected_
reserve_kv --> ready : _ [always] / on_unexpected_
reserve_kv_decision --> ready : _ [always] / on_unexpected_
reserve_recurrent --> ready : _ [always] / on_unexpected_
reserve_recurrent_decision --> ready : _ [always] / on_unexpected_
allocate_sequence_kv --> ready : _ [always] / on_unexpected_
allocate_sequence_kv_decision --> ready : _ [always] / on_unexpected_
allocate_sequence_recurrent --> ready : _ [always] / on_unexpected_
allocate_sequence_recurrent_decision --> ready : _ [always] / on_unexpected_
allocate_sequence_rollback_kv --> ready : _ [always] / on_unexpected_
allocate_sequence_rollback_result_decision --> ready : _ [always] / on_unexpected_
allocate_sequence_recurrent_error_decision --> ready : _ [always] / on_unexpected_
allocate_slots_kv --> ready : _ [always] / on_unexpected_
allocate_slots_kv_decision --> ready : _ [always] / on_unexpected_
allocate_slots_recurrent --> ready : _ [always] / on_unexpected_
allocate_slots_recurrent_decision --> ready : _ [always] / on_unexpected_
allocate_slots_rollback_kv --> ready : _ [always] / on_unexpected_
allocate_slots_rollback_result_decision --> ready : _ [always] / on_unexpected_
allocate_slots_recurrent_error_decision --> ready : _ [always] / on_unexpected_
branch_sequence_kv --> ready : _ [always] / on_unexpected_
branch_sequence_kv_decision --> ready : _ [always] / on_unexpected_
branch_sequence_recurrent --> ready : _ [always] / on_unexpected_
branch_sequence_recurrent_decision --> ready : _ [always] / on_unexpected_
branch_sequence_rollback_kv --> ready : _ [always] / on_unexpected_
branch_sequence_rollback_result_decision --> ready : _ [always] / on_unexpected_
branch_sequence_recurrent_error_decision --> ready : _ [always] / on_unexpected_
free_sequence_kv --> ready : _ [always] / on_unexpected_
free_sequence_kv_decision --> ready : _ [always] / on_unexpected_
free_sequence_recurrent --> ready : _ [always] / on_unexpected_
free_sequence_recurrent_decision --> ready : _ [always] / on_unexpected_
rollback_slots_kv --> ready : _ [always] / on_unexpected_
rollback_slots_kv_decision --> ready : _ [always] / on_unexpected_
rollback_slots_recurrent --> ready : _ [always] / on_unexpected_
rollback_slots_recurrent_decision --> ready : _ [always] / on_unexpected_
capture_request_decision --> ready : _ [always] / on_unexpected_
capture_kv --> ready : _ [always] / on_unexpected_
capture_kv_decision --> ready : _ [always] / on_unexpected_
capture_recurrent --> ready : _ [always] / on_unexpected_
capture_recurrent_decision --> ready : _ [always] / on_unexpected_
capture_merge --> ready : _ [always] / on_unexpected_
done --> ready : _ [always] / on_unexpected_
out_of_memory --> ready : _ [always] / on_unexpected_
errored --> ready : _ [always] / on_unexpected_