NVR with realtime local object detection for IP cameras
Gracefully handle transiently failing exists calls (#23172)
I have a very repeatable reproduction of an issue where most of my cameras show a "No frames have been received, check error logs" image in the UI, but restreaming in HomeAssistant is working flawlessly. The only errors in the logs I saw were some like this: `OSError: [Errno 121] Remote I/O error`. Doing a bit more debugging, it looked like Frigate was failing to create the thumbnail directory for a camera because it already existed. This error was a clue as to the class of error. I was surprised to learn that `os.path.exists` [silently suppresses errors from os.stat and returns False](https://github.com/python/cpython/blob/main/Lib/genericpath.py#L22). This makes for a plausible series of events: a transient stat call fails, so Frigate takes the creation path, which gets upset that the directory already exists. I found a few other possible cases to fix but did not make an exhaustive search. It seems that this `exist_ok` flag is used elsewhere within Frigate so I thought it would be a good solution. AI disclosure: I used AI to diagnose my issue and asked it to translate its init-time patches to the container source into this repo. I verified that its patches solved the problem I was facing. Its theory fits the facts - I am using a distributed file system and I saw the error in my logs. I checked the upstream Python code to verify the error suppression behavior, and read the corresponding Frigate code. I did not use AI to author this commit message/PR description; all diction and typos here are my own.
R
Rob Arnold committed
f1e2240945ac73976fc1404e180daa6261379c15
Parent: 4e90d25
Committed by GitHub <noreply@github.com>
on 5/12/2026, 6:34:46 PM