[ISSUE] Another entry can take a slot while its owner is disabled or reloading
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 24/100
Direzione di ricerca
Start with the slot claim logic in core/registry.py, specifically want and _check_free, and trace what happens to a slot when its owning entry is disabled or reloading. Reproduce the steps in the issue: two entries configuring the same slot on one lock, then a change to the second entry while the first is down. The open question is which ownership rule to adopt, so agree on one with maintainers before coding. Done means the owner keeps its slot across disable and reload, and a test covers the hand-off cases.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
What happened?
Found while reviewing #1690 (milestone 5c of the clean-room core rebuild). It also happens before #1690, so it was left out of that PR.
Two config entries can configure the same slot on the same lock. This only happens with older storage. The first entry to claim the slot owns it (core/registry.py: want / _check_free).
While the owning entry is disabled or reloading, it releases the lock but keeps no claim on the slot. If the other entry's slot changes during that window, for example its condition entity changes, that entry claims the slot. When the owner comes back, the slot is already owned by the other entry, and the owner loses it for good.
Expected: a disabled or reloading entry keeps its slot. Another entry should get it only through an explicit hand-off: give-up, the lock being removed from the owner, or the owner being deleted. #1690 already makes reload and disable keep the slot when no other entry is involved.
Open design question: which entry should own a slot that two entries configure? Options:
- remember the owner across disable and reload, so the other entry can't claim the slot meanwhile;
- reject the duplicate configuration outright, and repair it on migration;
- make the claim order deterministic, e.g. oldest entry wins.
Steps to reproduce the issue
- Set up two LCM entries, A and B, that both configure slot N on the same lock (older storage allows this). A owns slot N.
- Disable or reload entry A.
- While A is down, change B's slot N, e.g. flip its condition entity.
- Re-enable A, or let its reload finish.
- B now owns slot N, and A's configuration for slot N is no longer applied.
Home Assistant Version
n/a (found in code review)
What version of Lock Code Manager are you running?
feature/clean-room-core (#1690 head 5f39491d); present before #1690 too
Lock make and model
Any
🤖 Generated with Claude Code
- Lingua principale
- Python
- Stelle
- 108
- Fork
- 18
- Merge medio
- 2h 7m
- PR unite (30g)
- 130
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di raman325/lock_code_manager
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
raman325/lock_code_manager#1729 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 22/100
raman325/lock_code_manager#1697 ·
I maintainer di solito rispondono entro 1 giorno
-
[ISSUE] A homeowner's Matter code at a turned-off slot's index suspends the slotForse già presa @raman325 l’ha presa 1 giorno fa. Apertabug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 22/100
raman325/lock_code_manager#1695 ·
I maintainer di solito rispondono entro 1 giorno
-
[ISSUE] Adding a lock in the options flow overwrites codes already on itForse già presa @raman325 l’ha presa 1 giorno fa. Apertabug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
raman325/lock_code_manager#1684 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 45/100
raman325/lock_code_manager#1581 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di raman325/lock_code_manager
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
cellrishi-code/claude-skills-atlas#165 ·
I maintainer di solito rispondono entro 1 giorno
-
bug confirmed issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
open-webui/open-webui#32635 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Filters: ?field:ne=null matches NULL rows instead of non-NULL onesForse già presa @rshdhere l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Netflix/metaflow-service#504 ·
-
needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
gke-labs/kube-agents#3394 ·
I maintainer di solito rispondono entro 1 giorno
-
A2A audit timestamps end in +00:00Z (invalid ISO 8601)Forse già presa @O1sumitkumar l’ha presa oggi. Apertabug good first issue help wanted python
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno