invoke-ai/InvokeAI · error · ImageMoveQueueActive
Cannot start image move while queue work is active
Error message
Cannot start image move while queue work is active
What it means
_assert_no_active_queue_work blocks image move operations while the session queue has pending or in-progress work, raising ImageMoveQueueActive. Moving files mid-generation would corrupt images referenced by running queue items.
Source
Thrown at invokeai/app/services/image_moves/image_moves_default.py:134
self._refresh_finished_future_locked()
return self._build_background_status_locked()
def is_maintenance_active(self) -> bool:
with self._future_lock:
self._refresh_finished_future_locked()
is_running = self._future is not None and not self._future.done()
operation_reserved = self._future_operation is not None
return operation_reserved or is_running or self._get_active_job_id() is not None
def _assert_no_active_queue_work(self) -> None:
session_queue = self._session_queue
if session_queue is None and self._invoker is not None:
session_queue = getattr(self._invoker.services, "session_queue", None)
if session_queue is None:
return
queue_status = session_queue.get_queue_status(DEFAULT_QUEUE_ID)
if queue_status.pending > 0 or queue_status.in_progress > 0:
raise ImageMoveQueueActive("Cannot start image move while queue work is active")
def _start_background_operation(
self,
operation: ImageMoveBackgroundOperation,
target,
require_idle_queue: bool = False,
) -> ImageMoveBackgroundStatus:
with self._future_lock:
self._refresh_finished_future_locked()
if self._future_operation is not None or (self._future is not None and not self._future.done()):
raise ImageMoveJobAlreadyRunning("An image move job is already running")
active_job_id = self._get_active_job_id()
if operation != "recovery" and active_job_id is not None:
raise ImageMoveJobAlreadyRunning("An image move job is already active")
self._last_background_error = None
self._future_operation = operation
try:View on GitHub (pinned to 0b6a024f2f)
Solutions
- Wait for the queue to drain: poll get_queue_status until pending==0 and in_progress==0, then retry
- Cancel or clear pending queue items before starting the move
- Start the image move when the server is idle (e.g. before user sessions begin)
Example fix
// before
service.start_background_move_all(target, require_idle_queue=True) # raises while queue busy
// after
status = invoker.services.session_queue.get_queue_status(DEFAULT_QUEUE_ID)
if status.pending == 0 and status.in_progress == 0:
service.start_background_move_all(target, require_idle_queue=True) Defensive patterns
Strategy: retry
Validate before calling
def queue_is_idle(session_queue, queue_id=DEFAULT_QUEUE_ID) -> bool:
s = session_queue.get_queue_status(queue_id)
return s.pending == 0 and s.in_progress == 0
assert queue_is_idle(invoker.services.session_queue) Try / catch
from invokeai.app.services.image_moves.image_moves_common import ImageMoveQueueActive
for attempt in range(20):
try:
service.start_background_move_all(target, require_idle_queue=True)
break
except ImageMoveQueueActive:
time.sleep(30) # wait for queue to drain Prevention
- Schedule image moves during idle periods only
- Poll queue status before invoking maintenance operations
- Cancel pending queue items if an immediate move is required
When it happens
Trigger: Calling start_background_move_all with require_idle_queue=True (or recovery flows) while queue_status.pending or in_progress > 0 for the default queue.
Common situations: Trying to move/consolidate images while a generation batch is running; scheduling maintenance during active processing; server still finishing queued jobs after startup.
Related errors
- An image move job is already running
- An image move job is already active
- Unexpected error while enqueuing batch: {e}
- Unexpected error while listing all queue items: {e}
- Unexpected error while listing all queue item ids: {e}
AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29).
Data as JSON: /api/errors/a666c53fdcb7c18b.
Report an issue: GitHub.