{"record":{"id":"a92894ee98b54e5a","repo":"mission-peace/interview","slug":"task-not-found","errorCode":null,"errorMessage":"Task not found","messagePattern":"Task not found","errorType":"exception","errorClass":"KeyError","httpStatus":null,"severity":"error","filePath":"python/graph/priorityqueue.py","lineNumber":37,"sourceCode":"            return True\n        else:\n            return False\n\n    def get_task_priority(self, task):\n        if task in self.entry_finder:\n            return (self.entry_finder[task])[0]\n        raise ValueError(\"task does not exist\")\n        \n    def add_task(self, priority, task):\n        if task in self.entry_finder:\n            raise KeyError(\"Key already exists\")\n        entry = [self.mul*priority, False, task]\n        self.entry_finder[task] = entry\n        heappush(self.pq, entry)\n\n    def change_task_priority(self, priority, task):\n        if task not in self.entry_finder:\n            raise KeyError(\"Task not found\")\n        self.remove_task(task)\n        entry = [self.mul*priority, False, task]\n        self.entry_finder[task] = entry\n        heappush(self.pq, entry)\n \n    def remove_task(self, task):\n        entry = self.entry_finder.pop(task)\n        entry[1] = True\n\n    def pop_task(self):\n        while self.pq:\n            priority, removed, task = heappop(self.pq)\n            if removed is False:\n                del self.entry_finder[task]\n                return task\n        raise KeyError(\"pop from an empty priority queue\")\n\n    def peek_task(self):","sourceCodeStart":19,"sourceCodeEnd":55,"githubUrl":"https://github.com/mission-peace/interview/blob/94be5deb0c0df30ade2a569cf3056b7cc1e012f4/python/graph/priorityqueue.py#L19-L55","documentation":"change_task_priority removes and re-inserts the task to update its priority, but only if the task exists in entry_finder; otherwise it raises KeyError(\"Task not found\"). Priority changes are only meaningful for tracked tasks.","triggerScenarios":"Calling change_task_priority(priority, task) for a task never added, or one already popped/removed from the queue.","commonSituations":"Reprioritizing a task after a worker already popped it, updating tasks from a different queue instance, or a task key type mismatch (string vs tuple id).","solutions":["Verify the task exists (task in pq.entry_finder) before changing priority","Add the task first if it may not exist, then change priority","Catch KeyError and treat as add-or-update: pq.add_task(priority, task) on miss"],"exampleFix":"// before\npq.change_task_priority(new_priority, task)\n// after\ntry:\n    pq.change_task_priority(new_priority, task)\nexcept KeyError:\n    pq.add_task(new_priority, task)","handlingStrategy":"try-catch","validationCode":"if task in pq.entry_finder:\n    pq.change_task_priority(priority, task)","typeGuard":"def is_tracked(pq, task):\n    return task in pq.entry_finder","tryCatchPattern":"try:\n    pq.change_task_priority(priority, task)\nexcept KeyError:\n    pq.add_task(priority, task)","preventionTips":["Confirm the task hasn't been popped by a consumer before reprioritizing","Use the same queue object for add and change operations","Standardize task keys (ids) to avoid identity mismatches"],"tags":["python","priority-queue","lookup-miss"],"backgroundTag":"record-not-found","analyzedSha":"94be5deb0c0df30ade2a569cf3056b7cc1e012f4","analyzedAt":"2026-09-08T13:27:05.954Z","contentChangedAt":"2026-09-08T13:27:05.954Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}