mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-06-21 11:51:53 +03:00
|
Some checks are pending
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
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. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| centroid_tracker.py | ||
| norfair_tracker.py | ||
| object_processing.py | ||
| stationary_classifier.py | ||
| tracked_object.py | ||