Skip to content

Commit d8f8cc9

Browse files
Devamittaclaude
andcommitted
ci: keep runner swap for goldendict export; revert expunge_all, preload set_ru TSV
- set swap-storage: false in free-disk-space across all release workflows — the parallel high-mem exporter OOMed the swapless 16GB runner (upstream draft_release keeps default swap and passes) - revert local db_session.expunge_all() addition for upstream parity - hoist read_set_ru_from_tsv() into render_data (once per export instead of per word) in export_dpd_ru/export_dpd_sbs, update registry local_changes Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 3235901 commit d8f8cc9

8 files changed

Lines changed: 20 additions & 17 deletions

File tree

.github/workflows/anki_release.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ jobs:
2424
haskell: true
2525
large-packages: true
2626
docker-images: true
27-
swap-storage: true
27+
# keep the default swap file: the goldendict high-mem exporter needs
28+
# it on 16GB runners (upstream draft_release keeps swap too)
29+
swap-storage: false
2830

2931
- name: Checkout repository
3032
uses: actions/checkout@v5

.github/workflows/ru_release.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ jobs:
3333
haskell: true
3434
large-packages: true
3535
docker-images: true
36-
swap-storage: true
36+
# keep the default swap file: the goldendict high-mem exporter needs
37+
# it on 16GB runners (upstream draft_release keeps swap too)
38+
swap-storage: false
3739

3840
- name: Checkout repository
3941
uses: actions/checkout@v5

.github/workflows/ru_release_kindle.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ jobs:
3030
haskell: true
3131
large-packages: true
3232
docker-images: true
33-
swap-storage: true
33+
# keep the default swap file: the goldendict high-mem exporter needs
34+
# it on 16GB runners (upstream draft_release keeps swap too)
35+
swap-storage: false
3436

3537
- name: Checkout repository
3638
uses: actions/checkout@v5

.github/workflows/ru_release_test.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ jobs:
3333
haskell: true
3434
large-packages: true
3535
docker-images: true
36-
swap-storage: true
36+
# keep the default swap file: the goldendict high-mem exporter needs
37+
# it on 16GB runners (upstream draft_release keeps swap too)
38+
swap-storage: false
3739

3840
- name: Checkout repository
3941
uses: actions/checkout@v5

exporter/goldendict/export_dpd.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -377,9 +377,6 @@ def _add_parts(row: DpdHeadwordDbRowItems) -> DpdHeadwordDbParts:
377377
pr.counter(processed, pali_words_count, marker)
378378
reported = processed
379379

380-
# Evict processed records to prevent memory leak
381-
db_session.expunge_all()
382-
383380
total_sizes = sum_rendered_sizes(rendered_sizes)
384381

385382
return dpd_data_list, total_sizes

exporter/goldendict/export_dpd_ru.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ class DpdHeadwordRenderDataBase(TypedDict):
6363
cf_set: set[str]
6464
idioms_set: set[str]
6565
show_id: bool
66+
set_ru_dict: dict[str, str]
6667

6768

6869
class DpdHeadwordRenderData(DpdHeadwordRenderDataBase):
@@ -141,7 +142,7 @@ def render_pali_word_dpd_html(
141142
synonyms += i.inflections_thai_list
142143
synonyms += i.family_set_list
143144

144-
set_ru_dict = read_set_ru_from_tsv()
145+
set_ru_dict = rd["set_ru_dict"]
145146
ru_set_list = []
146147
for english_word in i.family_set_list:
147148
if english_word in set_ru_dict:
@@ -339,6 +340,7 @@ def generate_dpd_html(
339340
"cf_set": cf_set,
340341
"idioms_set": idioms_set,
341342
"show_id": show_id,
343+
"set_ru_dict": read_set_ru_from_tsv(),
342344
}
343345

344346
# Preload the family tables once instead of 3 queries per headword.
@@ -407,9 +409,6 @@ def _add_parts(row: DpdHeadwordDbRowItems) -> DpdHeadwordDbParts:
407409
pr.counter(processed, pali_words_count, marker)
408410
reported = processed
409411

410-
# Evict processed records to prevent memory leak
411-
db_session.expunge_all()
412-
413412
total_sizes = sum_rendered_sizes(rendered_sizes)
414413

415414
return dpd_data_list, total_sizes

exporter/goldendict/export_dpd_sbs.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ class DpdHeadwordRenderDataBase(TypedDict):
6969
show_ru_data: bool
7070
show_ta_data: bool
7171
show_grammar: bool
72+
set_ru_dict: dict[str, str]
7273

7374

7475
class DpdHeadwordRenderData(DpdHeadwordRenderDataBase):
@@ -157,7 +158,7 @@ def render_pali_word_dpd_html(
157158
synonyms += i.family_set_list
158159

159160
if show_ru_data:
160-
set_ru_dict = read_set_ru_from_tsv()
161+
set_ru_dict = rd["set_ru_dict"]
161162
ru_set_list = []
162163
for english_word in i.family_set_list:
163164
if english_word in set_ru_dict:
@@ -362,6 +363,7 @@ def generate_dpd_html(
362363
"show_ru_data": show_ru_data,
363364
"show_ta_data": show_ta_data,
364365
"show_grammar": show_grammar,
366+
"set_ru_dict": read_set_ru_from_tsv(),
365367
}
366368

367369
# Preload the family tables once instead of 3 queries per headword.
@@ -429,9 +431,6 @@ def _add_parts(row: DpdHeadwordDbRowItems) -> DpdHeadwordDbParts:
429431
pr.counter(processed, pali_words_count, marker)
430432
reported = processed
431433

432-
# Evict processed records to prevent memory leak
433-
db_session.expunge_all()
434-
435434
total_sizes = sum_rendered_sizes(rendered_sizes)
436435

437436
return dpd_data_list, total_sizes

kamma/upstream_sync/registry.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@
312312
"`DpdHeadwordDbParts` includes `ru: Russian` model; queries filter for `Russian.id.isnot(None)`.",
313313
"`render_pali_word_dpd_html` uses `data_classes_dps.HeadwordData` and renders via `dpd_headword_ru.jinja`.",
314314
"Size tracking: `size_dict[\"dpd_summary\"]` records `data.ru_meaning` length instead of English meaning.",
315-
"Synonyms include Russian set names via `tools_for_ru_exporter.read_set_ru_from_tsv()`.",
315+
"`DpdHeadwordRenderDataBase` preloads Russian set names via `read_set_ru_from_tsv()` once at the start of `generate_dpd_html`; each render accesses the dict from `render_data`.",
316316
"`generate_dpd_html` uses `rupth: RuPaths` and `joinedload(DpdHeadword.ru)`."
317317
],
318318
"watch_for": [
@@ -401,7 +401,7 @@
401401
"local_changes": [
402402
"`generate_dpd_html` signature adds `dpspth: DPSPaths`, `show_sbs_data`, `show_ru_data`, `show_ta_data`, and `show_grammar` flags.",
403403
"Eagerly loads `.rt`, `.ru`, `.ta`, and `.sbs` relationships.",
404-
"Synonyms logic includes a conditional Russian set lookup if `show_ru_data` is true.",
404+
"`DpdHeadwordRenderDataBase` preloads Russian set names via `read_set_ru_from_tsv()` once at the start of `generate_dpd_html`; each render accesses the dict conditionally from `render_data` if `show_ru_data` is true.",
405405
"`_parse_batch_top_level` uses `sbs_templates/` and passes all locale flags including `show_ta_data`.",
406406
"`DpdHeadwordRenderDataBase` TypedDict includes `show_ta_data: bool`."
407407
],

0 commit comments

Comments
 (0)