librarian: koniec z akumulacją debug-dumpów + ucywilizowane logowanie searcha #16

Merged
gitea merged 1 commits from librarian-log-hygiene into main 2026-08-03 15:41:46 +00:00
Owner

Dwie porządkowe rzeczy (na bazie zmergowanego już #15 z ograniczeniem kolejki):

1. Debug-dumpy wynikowe (pamięć + dysk)

cr_results.json / rr_results.json / s_results.json były write-only (nikt ich nie czyta), a mimo to akumulowały każde wyszukanie na zawsze i json.load-owały całość rosnącego pliku przy każdym zapisie → nieograniczony RAM i puchnący PVC; dla deep-searcha sam surowy cr_results to setki MB.

  • Domyślnie wyłączone (CONJURER_LIBRARIAN_DEBUG_DUMPS=1 żeby włączyć).
  • Włączone → nadpisują tylko ostatnie wyszukanie (bez load, bez akumulacji).
  • not_in_db.json nietknięty — to realna kolejka drenowana przez scraper.

2. Logowanie searcha (czytelność kubectl logs)

search_bot logował przez print(), w tym linia postępu z karetką na KAŻDĄ linię — miliony wpisów zalewających stdout/plik. OK w apce desktopowej, nieczytelne i puchnące w kontenerze.

  • Wszystko → normalne logging na DEBUG (z grubym postępem co 500k linii), więc normalny przebieg jest cichy.
  • Poziom logu konfigurowalny: CONJURER_LIBRARIAN_LOG_LEVEL (domyślnie INFO).
  • Dodany handler na stdout, żeby kubectl logs był użyteczny (search już nie printuje wprost na stdout). DEBUG = pełna gadatliwość z powrotem.

3. Przy okazji

  • test_result_delivery_contract hermetyczny (spool w tmp, nie zanieczyszcza realnego result_inbox/) — naprawia lokalny flake, który wcześniej widziałeś.
  • .gitignore na runtime'owe katalogi spool (result_inbox/, delivered_uuids/, outbox/).

Suite: 56 unit + 45 integration zielone, przebieg integracyjny dwukrotny (potwierdzona hermetyczność, zero śmieci w repo).

🤖 Generated with Claude Code

Dwie porządkowe rzeczy (na bazie zmergowanego już #15 z ograniczeniem kolejki): ## 1. Debug-dumpy wynikowe (pamięć + dysk) `cr_results.json` / `rr_results.json` / `s_results.json` były **write-only** (nikt ich nie czyta), a mimo to **akumulowały każde wyszukanie na zawsze** i `json.load`-owały całość rosnącego pliku przy każdym zapisie → nieograniczony RAM i puchnący PVC; dla deep-searcha sam surowy `cr_results` to setki MB. - Domyślnie **wyłączone** (`CONJURER_LIBRARIAN_DEBUG_DUMPS=1` żeby włączyć). - Włączone → **nadpisują** tylko ostatnie wyszukanie (bez load, bez akumulacji). - `not_in_db.json` **nietknięty** — to realna kolejka drenowana przez scraper. ## 2. Logowanie searcha (czytelność `kubectl logs`) `search_bot` logował przez `print()`, w tym **linia postępu z karetką na KAŻDĄ linię** — miliony wpisów zalewających stdout/plik. OK w apce desktopowej, nieczytelne i puchnące w kontenerze. - Wszystko → normalne `logging` na **DEBUG** (z grubym postępem co 500k linii), więc **normalny przebieg jest cichy**. - Poziom logu konfigurowalny: `CONJURER_LIBRARIAN_LOG_LEVEL` (domyślnie **INFO**). - Dodany handler na **stdout**, żeby `kubectl logs` był użyteczny (search już nie printuje wprost na stdout). `DEBUG` = pełna gadatliwość z powrotem. ## 3. Przy okazji - `test_result_delivery_contract` **hermetyczny** (spool w tmp, nie zanieczyszcza realnego `result_inbox/`) — naprawia lokalny flake, który wcześniej widziałeś. - `.gitignore` na runtime'owe katalogi spool (`result_inbox/`, `delivered_uuids/`, `outbox/`). Suite: **56 unit + 45 integration** zielone, przebieg integracyjny dwukrotny (potwierdzona hermetyczność, zero śmieci w repo). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
gitea self-assigned this 2026-08-02 18:21:00 +00:00
gitea added 1 commit 2026-08-02 18:21:00 +00:00
Librarian: drop write-only result dumps + tame search logging
CI / compile (pull_request) Successful in 9s
CI / unit (pull_request) Successful in 23s
CI / integration (pull_request) Successful in 27s
build / build (push) Successful in 33s
CI / compile (push) Successful in 13s
CI / unit (push) Successful in 33s
CI / integration (push) Successful in 27s
c5643aa28f
Two hygiene fixes on top of the work-queue OOM bound:

Result dumps: cr_results / rr_results / s_results.json were write-only
(nothing reads them) yet accumulated EVERY search forever and json.load'd
the whole growing file on each write - unbounded RAM and PVC growth, and
for a deep search the raw cr_results dump is hundreds of MB. They are now
off by default (CONJURER_LIBRARIAN_DEBUG_DUMPS) and, when enabled, are
overwritten with just the latest search - never loaded or accumulated.
not_in_db.json is untouched: it's a real queue the scraper drains.

Search logging: search_bot logged via print(), including a per-line
carriage-return progress line that flooded stdout / the log file with
millions of entries - fine for a desktop app, unreadable and bloating in
a container. All of it is now proper logging at DEBUG (with coarse
per-500k-line progress), so a normal run is quiet. The librarian log
level is configurable (CONJURER_LIBRARIAN_LOG_LEVEL, default INFO) and a
stdout handler is added so  stays useful now that the
search no longer prints straight to stdout. Set DEBUG for full verbosity.

Also: make test_result_delivery_contract hermetic (point the durable
spool at a temp dir so it can't pollute or be poisoned by the real
result_inbox/ between runs) and gitignore the runtime spool dirs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
gitea merged commit c5643aa28f into main 2026-08-03 15:41:46 +00:00
gitea deleted branch librarian-log-hygiene 2026-08-03 15:41:47 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gitea/conjurer#16