librarian: napraw nieskończoną pętlę w wyszukiwaniu DOI #1
Reference in New Issue
Block a user
Delete Branch "fix-librarian-search-hang"
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?
Problem
search_botużywałMAXTHREADSdo DWÓCH rzeczy naraz: ile chunków czytać (pliki0..MAXTHREADS-1) I ile sentineli czekać na koniec — musiały się idealnie zgadzać. Za mało → ciche pomijanie końcowych plików; za dużo albo brakujący/nieczytelny chunk → producent ginął bez sentinela, licznik nigdy nie dobijał do progu,search_for_doiwisiał najoin()na zawsze. Failsafe bezczynności był martwym kodem (if empty_counter > 5 ... elif > 10: break—>10implikuje>5, więcbreaknieosiągalny).Dla zgłoszonego przypadku (MAXTHREADS=40, pliki 0–43): pliki 40–43 były cicho nieprzeszukiwane, a każdy run wskazujący na brakujący chunk zawieszał się.
Naprawa (3 warstwy)
discover_chunk_files:<n>_chunk.txtnumerycznie) zamiastrange(0, MAXTHREADS)— czyta wszystkie obecne, nigdy nie wskazuje na nieistniejący;finally— padnięty producent też go emituje; backstop bezczynności przestawiony tak, by faktycznie działał.MAXTHREADS→ deprecated/ignorowany (docs + env zaktualizowane).Weryfikacja
tests/unit/test_search_bot.py(4 testy, pytest-only): DOI w końcowym chunku znaleziony; nieczytelny chunk i tak kończy; pusty katalog wraca od razu; discovery sortowane numerycznie. Jobunit27 passed.