librarian: sygnał życia trwającego wyszukiwania (co 20 min) #21
Reference in New Issue
Block a user
Delete Branch "librarian-search-heartbeat"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Po co
Głęboki skan mieli godzinami i w logu jest cisza między startem a końcem — nie odróżnisz pracującego wyszukiwania od zawieszonego.
Co loguje
Co
CONJURER_LIBRARIAN_HEARTBEAT_SECONDS(domyślnie 1200 = 20 min), tylko gdy coś faktycznie leci:uuid, szukane hasło, orientacyjny postęp, ile trafień do tej pory, ile minut leci. Nic nie leci → cisza.
Dlaczego to nic nie kosztuje
Producenci już zapisują offset bajtowy per plik-chunk (to te same watermarki, których używa wznawianie), a suma rozmiarów plików jest liczona raz przy odkryciu chunków (~40 ×
stat()). Odczyt postępu = suma ~40 intów. Zero dodatkowej pracy na linię — żadnych cykli na szacowanie, ile cykli zostało.Jak wpięte
search_for_doiprzyjmuje opcjonalnyprogress, który wypełnia żywym dictempositions+total_bytes. Librarian publikuje trwające wyszukanie (uuid/query/progress/trafienia) na czas skanu i czyści je wfinally— więc skończony/scrashowany skan nigdy tam nie zostaje.Testy
Matematyka procentów (w tym nieznany total i klamrowanie >100%), round-trip rejestracji, oraz end-to-end: realny skan wypełnia
progresstak, że offsety pokrywają pliki na dysku. Suite: 58 unit + 65 integration zielone.🤖 Generated with Claude Code