Skip to content

D3: sync słownika dyscyplin przez sync_dictionary (+ fix transakcji)#612

Open
mpasternak wants to merge 1 commit into
feat/pbn-p4-readerfrom
feat/pbn-d3-dict-sync
Open

D3: sync słownika dyscyplin przez sync_dictionary (+ fix transakcji)#612
mpasternak wants to merge 1 commit into
feat/pbn-p4-readerfrom
feat/pbn-d3-dict-sync

Conversation

@mpasternak

Copy link
Copy Markdown
Member

Cel

download_disciplines/sync_disciplines (pbn_api/client/disciplines.py)
przestają trzymać otwartą transakcję bazodanową przez czas remote-calla do PBN.

Fix bugu: wcześniej @transaction.atomic obejmował cały remote-fetch —
dłuższa niedostępność/wolność PBN blokowała połączenie DB. Teraz pobranie idzie
przez django_pbn_client.sync_dictionary(fetch, upsert) (wzorzec
materialize-before-atomic, django-pbn-client#3): fetch poza transakcją, upsert
atomowo.

Podział

  • Generyczne (wzorzec transakcyjny) → sync_dictionary w pakiecie.
  • BPP-specific (matching do Dyscyplina_Naukowa/TlumaczDyscyplin) →
    wydzielone do _sync_discipline_translations (@transaction.atomic),
    zostaje w BPP.
  • Usunięto martwy if discipline.name == "weterynaria": pass.

Testy

test_client_disciplines.py: istniejące test_download_disciplines /
test_sync_disciplines przechodzą + nowy strażnik transaction=True
dowodzący, że get_disciplines (remote) dzieje się POZA transakcją, a upsert
WEWNĄTRZ. 11 passed.

Zależność / merge order

[tool.uv.sources] pinuje django-pbn-client git-source do gałęzi
feat/sync-dictionary. Po wydaniu django-pbn-client 0.2.1 na PyPI usunąć
wpis (pin >=0.2,<0.3 wystarczy). Merge po django-pbn-client#3.

Stack: na feat/pbn-p4-reader (#611).

🤖 Generated with Claude Code

download_disciplines/sync_disciplines przestają trzymać otwartą transakcję
przez czas remote-calla do PBN. Pobranie idzie teraz przez
sync_dictionary(fetch, upsert) (wzorzec materialize-before-atomic z
django-pbn-client 0.2.1): fetch poza transakcją, upsert atomowo. Matching do
modeli BPP (Dyscyplina_Naukowa/TlumaczDyscyplin) wydzielony do osobnej
@transaction.atomic metody — zostaje w BPP (BPP-specific).

Usunięto martwy `if discipline.name == "weterynaria": pass`. Test-strażnik
(transaction=True) dowodzi, że fetch dzieje się poza transakcją.

Zależność django-pbn-client 0.2.1 pinowana git-source (do usunięcia po
publikacji na PyPI). Stack: na feat/pbn-p4-reader.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant