{"record":{"id":"c17dd5de88c1b01a","repo":"invoke-ai/InvokeAI","slug":"error-updating-recall-parameters","errorCode":null,"errorMessage":"Error updating recall parameters","messagePattern":"Error updating recall parameters","errorType":"http","errorClass":"HTTPException","httpStatus":500,"severity":"error","filePath":"invokeai/app/api/routers/recall_parameters.py","lineNumber":577,"sourceCode":"                queue_id, current_user.user_id, provided_params\n            )\n            logger.info(\"Successfully emitted recall_parameters_updated event\")\n        except Exception as e:\n            logger.error(f\"Error emitting recall parameters event: {e}\", exc_info=True)\n            # Don't fail the request if event emission fails, just log it\n\n        return {\n            \"status\": \"success\",\n            \"queue_id\": queue_id,\n            \"updated_count\": updated_count,\n            \"parameters\": provided_params,\n        }\n\n    except HTTPException:\n        raise\n    except Exception as e:\n        logger.error(f\"Error updating recall parameters: {e}\")\n        raise HTTPException(\n            status_code=500,\n            detail=\"Error updating recall parameters\",\n        )\n\n\n@recall_parameters_router.get(\n    \"/{queue_id}\",\n    operation_id=\"get_recall_parameters\",\n    response_model=dict[str, Any],\n)\ndef get_recall_parameters(\n    current_user: CurrentUserOrDefault,\n    queue_id: str = Path(..., description=\"The queue id to retrieve parameters for\"),\n) -> dict[str, Any]:\n    \"\"\"\n    Retrieve all stored recall parameters for a given queue.\n\n    Returns a dictionary of all recall parameters that have been set for the queue.","sourceCodeStart":559,"sourceCodeEnd":595,"githubUrl":"https://github.com/invoke-ai/InvokeAI/blob/0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06/invokeai/app/api/routers/recall_parameters.py#L559-L595","documentation":"Catch-all HTTP 500 at the end of update_recall_parameters for any unexpected exception not already handled (not an HTTPException raised earlier). It logs 'Error updating recall parameters' with the underlying error and returns a generic 500 detail, hiding internals from the client.","triggerScenarios":"Any unhandled failure in the endpoint body outside per-parameter set_by_key handling: failures validating image access on non-HTTP paths, queue lookup errors, iteration bugs, or unexpected service exceptions.","commonSituations":"Unanticipated service-layer exceptions (queue not found but surfacing as generic Exception), bugs introduced by version upgrades, misconfigured ApiDependencies services.","solutions":["Check the server log for 'Error updating recall parameters: {e}' — the real cause is only there, not in the response","Retry the request after confirming services are healthy","Validate the request payload (queue_id exists, parameter keys are known) before calling","If reproducible, reproduce with verbose logging or run with debug enabled and file an issue","Ensure the InvokeAI services (queue, client_state_persistence) are correctly initialized after upgrades"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// validate inputs before calling to avoid the catch-all 500\nconst queues = await api.getQueueItemNames();\nif (!queues.includes(queueId)) throw new Error(`unknown queue ${queueId}`);\nfor (const k of Object.keys(params)) if (!isKnownRecallParam(k)) throw new Error(`unknown param ${k}`);","typeGuard":null,"tryCatchPattern":"try {\n  await api.recallParameters(queueId, params);\n} catch (e) {\n  if (e.status === 500 && e.body?.detail === 'Error updating recall parameters') {\n    // generic 500 — consult server logs for the real exception before retrying\n    console.error('recall update failed; see server log for cause');\n  } else throw e;\n}","preventionTips":["Always read server logs for this error — the HTTP detail is intentionally generic","Validate queue_id and parameter keys against the API before calling","Pin/verify InvokeAI version compatibility after upgrades","Report reproducible cases with server logs to maintainers"],"tags":["http-500","unhandled-exception","recall-parameters"],"backgroundTag":"unhandled-endpoint-exception","analyzedSha":"0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06","analyzedAt":"2026-08-29T04:46:49.967Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}