invoke-ai/InvokeAI · error · TooManySessionsError

call_saved_workflow exceeds remaining queue capacity for chi

Error message

call_saved_workflow exceeds remaining queue capacity for child workflow executions

What it means

Before expanding a generator, its declared item count is checked against the remaining queue capacity (maximum_items). If the generator would produce more child sessions than the queue can accept, TooManySessionsError is raised to protect the queue from an oversized batch.

Source

Thrown at invokeai/app/services/session_processor/workflow_call_batch.py:420

) -> list[Any]:
    generator_node_data = generator_node["data"]
    node_type = generator_node_data.get("type")
    inputs = generator_node_data.get("inputs")
    if not isinstance(node_type, str) or not _is_mapping(inputs):
        raise UnsupportedWorkflowNodeError("call_saved_workflow generator node is malformed")
    generator_input = inputs.get("generator")
    if not _is_mapping(generator_input):
        raise UnsupportedWorkflowNodeError(
            f"call_saved_workflow generator node '{generator_node_data.get('id')}' is missing generator input"
        )
    generator_value = generator_input.get("value")
    if not _is_mapping(generator_value):
        raise UnsupportedWorkflowNodeError(
            f"call_saved_workflow generator node '{generator_node_data.get('id')}' has invalid generator value"
        )
    declared_item_count = _get_declared_generator_item_count(generator_value)
    if declared_item_count is not None and declared_item_count > maximum_items:
        raise TooManySessionsError("call_saved_workflow exceeds remaining queue capacity for child workflow executions")
    if node_type == "integer_generator":
        return _resolve_integer_generator(generator_value)
    if node_type == "float_generator":
        return _resolve_float_generator(generator_value)
    if node_type == "string_generator":
        return _resolve_string_generator(generator_value)
    if node_type == "image_generator":
        return _resolve_image_generator(generator_value, services, user_id)
    raise UnsupportedWorkflowNodeError(f"Unsupported generator node type '{node_type}'")


def _get_generator_placeholder_items(generator_node: Mapping[str, Any]) -> list[Any]:
    generator_node_data = generator_node["data"]
    node_type = generator_node_data.get("type")
    if node_type == "integer_generator":
        return [0]
    if node_type == "float_generator":
        return [0.0]

View on GitHub (pinned to 0b6a024f2f)

Solutions

  1. Reduce the generator's declared item count (lower 'count' or narrow start/stop) so it fits remaining capacity
  2. Clear completed/failed sessions or cancel queued items to free queue capacity
  3. Raise the queue capacity limit configuration, then re-enqueue the workflow

Example fix

// before: count=1000 but only 50 slots remain
"inputs": {"generator": {"value": {"count": 1000, "start": 0, "stop": 1000, "step": 1}}}
// after
"inputs": {"generator": {"value": {"count": 50, "start": 0, "stop": 50, "step": 1}}}
Defensive patterns

Strategy: try-catch

Validate before calling

declared = compute_declared_item_count(node["data"]["inputs"]["generator"]["value"])
remaining = queue_service.get_remaining_capacity(batch_id)
if declared > remaining:
    shrink_generator_range(node, remaining)  # or raise before enqueue

Type guard

def is_within_capacity(declared_count: int, maximum_items: int) -> bool:
    return declared_count <= maximum_items

Try / catch

from invokeai.app.services.session_queue.session_queue_common import TooManySessionsError
try:
    enqueue_batch(batch)
except TooManySessionsError as e:
    trim_batch_and_reenqueue(batch, e)

Prevention

When it happens

Trigger: Queueing a call_saved_workflow whose generator (e.g. integer range of 1000 items) exceeds the queue's remaining capacity for that batch, i.e. declared_item_count > maximum_items.

Common situations: Large range generators (count/start/stop) combined with a nearly-full queue or a low max-queue-size setting; replaying an old batch after the queue grew.

Related errors


AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29). Data as JSON: /api/errors/150b8e377d83e45e. Report an issue: GitHub.