{"record":{"id":"a92f6982c321ff44","repo":"HKUDS/DeepTutor","slug":"staleinteractionerror-question-id-active-inter","errorCode":null,"errorMessage":"StaleInteractionError({question_id}, {active.interaction_id})","messagePattern":"StaleInteractionError\\((.+?), (.+?)\\)","errorType":"exception","errorClass":"StaleInteractionError","httpStatus":null,"severity":"error","filePath":"deeptutor/learning/service.py","lineNumber":510,"sourceCode":"        same ``question_id`` returns the stored result and never appends a\n        second attempt.\n        \"\"\"\n\n        def grade(tx):\n            interaction = tx.get_interaction(question_id) if question_id else None\n            if interaction is None and not question_id:\n                interaction = tx.active_interaction()\n            if interaction is None:\n                legacy = self._interaction_from_legacy_pending(\n                    tx.progress, session_id=session_id, turn_id=turn_id\n                )\n                if legacy is not None and (not question_id or legacy.interaction_id == question_id):\n                    interaction = legacy\n                    tx.put_interaction(interaction)\n            if interaction is None:\n                active = tx.active_interaction()\n                if active is not None and question_id:\n                    raise StaleInteractionError(question_id, active.interaction_id)\n                raise NoPendingInteractionError(\"No question is awaiting an answer\")\n            if question_id and interaction.interaction_id != question_id:\n                raise StaleInteractionError(question_id, interaction.interaction_id)\n            if interaction.status == InteractionStatus.GRADED:\n                return interaction, True\n            if interaction.status == InteractionStatus.ABANDONED:\n                raise NoPendingInteractionError(\"The question was abandoned\")\n\n            pending = interaction.question\n            raw_answer = (\n                interaction.user_answer\n                if interaction.status == InteractionStatus.ANSWERED\n                else str(answer or \"\")\n            )\n            if interaction.status == InteractionStatus.ANSWERED:\n                if pending.question_type == \"choice\":\n                    from deeptutor.learning.pending import (\n                        has_option_bodies,","sourceCodeStart":492,"sourceCodeEnd":528,"githubUrl":"https://github.com/HKUDS/DeepTutor/blob/3e82f130422a813cdd73c10b21a44e9325f5821a/deeptutor/learning/service.py#L492-L528","documentation":"Error \"StaleInteractionError({question_id}, {active.interaction_id})\" thrown in HKUDS/DeepTutor.","triggerScenarios":"Thrown at deeptutor/learning/service.py:510 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3e82f130422a813cdd73c10b21a44e9325f5821a","analyzedAt":"2026-08-27T06:57:25.364Z","schemaVersion":2},"datasetVersion":"2026-08-27T08:17:20.692Z"}