R-1112: open the family store when the controller starts
gates / gates (push) Successful in 46s

Found on demo-hp with 0.325.0-rc.1: the store (and so the conversion of an old family.json) opened only on the
first family request; a box nobody visits through a family gate kept the session values. OpenFamilyStore from
main, one INFO line with the count. TestR1112_StartConvertsTheFamilyFile, TestR1112_MainOpensTheFamilyStore,
red-proved.

Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
admin committed 2026-10-17 09:56:12 +02:00
1 parent 94f44931dd
commit 6ed223886d
6 files changed
+82 -2

No files matched your search

+11
View File
@@ -93,6 +93,17 @@ func (s *Server) familyStore() *family.Store {
return s.fam.store
}
// OpenFamilyStore opens the family list when the controller starts (R-1112). A family.json written before v0.325.0
// holds the session values themselves, and the store converts them to fingerprints when it is OPENED — which was
// lazily, on the first family request: on a box where nobody passes a family gate, never (measured on demo-hp 9201,
// 2026-10-17: rc.1 up, family.json still in the old shape). Pinned by TestR1112_StartConvertsTheFamilyFile and
// cmd/controller TestR1112_MainOpensTheFamilyStore.
func (s *Server) OpenFamilyStore() {
if n := s.familyStore().ConvertedAtOpen(); n > 0 {
s.logger.Printf("[INFO] [web] family store: %d session(s) stored the old way were rewritten as fingerprints (R-1112)", n)
}
}
// familyReserve checks whether this visitor or this name is out of tries and, when neither is, counts this try
// against both — one step under one lock (R-983, v0.324.0), so parallel tries cannot all pass a check that none of
// them has counted yet. Windows slide; a success clears both (familyCleared). It reports whether the try may go ahead.