/////

2026-05-11 인수창고 ZaraServer staging 수집 전송 자동화 구현

2026-05-11 13:43 KST 기준, 인수창고 수집 파이프라인을 ZaraServer 직접 쓰기 대신 WSL ext4 staging에서 수집·AVIF 처리한 뒤 완성본만 ZaraServer 최종 저장소로 전송하는 방식으로 바꾼 초기 구현 기록이다.

/////

2026-05-11 인수창고 ZaraServer staging 수집 전송 자동화 구현 이력

2026-05-11 13:43 KST 기준, 인수창고 수집 파이프라인을 ZaraServer 직접 쓰기 대신 WSL ext4 staging에서 수집·AVIF 처리한 뒤 완성본만 ZaraServer 최종 저장소로 전송하는 방식으로 바꾼 초기 구현 기록이다.

구현 내용#

  • 웹툰 대상 선정기 prepare_site_collection_targets.py--extra-webtoon-root를 추가해 staging 수집 시 최종 ZaraServer 보유분도 중복 제외하도록 했다.
  • 만화 수집기 ililtoon_collector_v2.py--existing-root를 추가해 staging과 최종 저장소를 함께 확인하고 이미 완료된 만화를 건너뛰도록 했다.
  • tools/transfer_completed_media_to_final.py를 추가했다. 완성된 작품만 _incoming_media/<category>/<slug>.partial...로 복사하고, 파일 수/바이트 검증 뒤 최종 자료/<category>/<slug>로 rename한 다음 staging 원본을 삭제하는 전송기로 설계했다.
  • run_media_collection_pipeline.shFINAL_DATA_ROOT, TRANSFER_AFTER_BATCH, INCOMING_ROOT를 추가했다. 배치 수집과 AVIF 완료 뒤 category별 전송기를 실행하도록 했다.
  • run_next_site_overall_popular_round.shDATA_ROOT를 staging으로 쓰면서 FINAL_DATA_ROOT/웹툰을 대상 제외 루트로 넘기고, AVIF도 staging root에 대해 실행하도록 수정했다.
  • cutover_to_zaraserver_after_current.sh는 cutover 후 DATA_ROOT=/home/insu/insu-warehouse-staging/자료, FINAL_DATA_ROOT=/mnt/f/insu-warehouse-data/자료, TRANSFER_AFTER_BATCH=1로 pipeline을 실행하도록 했다. 당시 기본 시작값은 웹툰 collect batch 8, image concurrency 5, AVIF concurrency 6이었다.

당시 검증#

  • 수정된 Python 파일은 py_compile을 통과했다.
  • 수정된 shell 파일은 bash -n을 통과했다.
  • ZaraServer healthcheck의 write/sha1/rename/read가 통과했다.
  • 당시 새 cutover watcher는 setsid로 실행되어 VHDX 웹툰 collector 종료를 기다리고 있었다.

현재 해석#

이 노트는 2026-05-11 초기 전환 구현 이력으로 보존한다. 기존 본문에 있던 watcher PID와 ‘현재 대기 중’ 표현은 시점 의존 운영 상태였으므로 최신 상태 주장으로 재사용하지 않는다.

후속 기록에 따르면 같은 날 밤 staging 전송 정책은 AVIF 일부 실패 작품도 manifest가 완성되면 전송하고 AVIF retry 로그를 남기는 방식으로 바뀌었으며, transfer_completed_media_to_final.py.tmp, .partial.*, .rsync-partial 같은 임시 파일을 전송 통계와 copytree에서 제외하도록 조정됐다. 2026-05-12에는 직렬 staging 큐가 웹툰/만화 병렬 staging 레인으로 전환됐고, 2026-05-19에는 AVIF/전송 단계가 실행되지 않던 shell set -e 관련 후처리 문제가 별도로 수정됐다.

Sagwan Maintenance 2026-06-05#

  • verdict: revise
  • note: 핵심 구현 사실은 유지하되, PID·현재 대기 상태 등 시점 의존 내용을 역사적 당시 상태로 낮추고 후속 staging/AVIF/병렬 레인 기록과 연결했다.

Sagwan Revalidation 2026-06-05T21:53:48Z#

  • verdict: ok
  • note: 이력 노트로 범위가 명확하고 시점 의존 상태도 최신 주장으로 쓰지 않는다.

Sagwan Revalidation 2026-06-06T22:11:24Z#

  • verdict: ok
  • note: 과거 구현 이력으로 보존되며 시점 의존 상태도 이미 분리됨

Sagwan Revalidation 2026-06-07T22:40:36Z#

  • verdict: ok
  • note: 초기 구현 이력으로 범위가 명확해 현재 주장과 충돌하지 않음

Sagwan Revalidation 2026-06-08T23:11:52Z#

  • verdict: ok
  • note: 구현 이력으로 범위가 한정되어 현재 재사용에 문제될 최신 주장 없음

Sagwan Revalidation 2026-06-10T05:54:26Z#

  • verdict: ok
  • note: 초기 구현 이력으로 범위가 한정돼 시점 의존 주장도 적절히 배제됨

Sagwan Revalidation 2026-06-11T06:10:11Z#

  • verdict: ok
  • note: 이력성 기록이며 시점 의존 상태도 배제해 현재 재사용 가능함

Sagwan Revalidation 2026-06-12T06:47:18Z#

  • verdict: ok
  • note: [chatgpt HTTP 401] {

Sagwan Revalidation 2026-06-13T07:21:35Z#

  • verdict: ok
  • note: 이력성 기록이며 시점 의존 표현도 이미 배제되어 재사용 가능함

Sagwan Revalidation 2026-06-14T07:29:16Z#

  • verdict: ok
  • note: 이력 기록으로 한정되어 시점 의존 상태도 명시 배제되어 재사용 가능

Sagwan Revalidation 2026-06-15T07:59:54Z#

  • verdict: ok
  • note: 이력 문서로 시점 의존 상태를 배제해 현재도 재사용 가능함

Sagwan Revalidation 2026-06-16T08:09:57Z#

  • verdict: ok
  • note: 시점 의존 상태를 배제한 구현 이력으로 현재도 재사용 가능하다.

Sagwan Revalidation 2026-06-17T09:38:38Z#

  • verdict: ok
  • note: 초기 구현 이력으로 한정되어 시점 의존 상태 주장은 배제되어 있다.

Sagwan Revalidation 2026-06-18T09:41:32Z#

  • verdict: ok
  • note: 이력 기록이며 시점 의존 상태도 배제되어 현재 재사용에 문제 없음

Sagwan Revalidation 2026-06-19T11:15:32Z#

  • verdict: ok
  • note: 초기 구현 이력으로 범위가 명확하며 시점 의존 상태도 배제되어 있다.

Sagwan Revalidation 2026-06-20T11:39:19Z#

  • verdict: ok
  • note: 시점 의존 상태를 배제한 구현 이력으로, 최신성 문제 없이 재사용 가능함

Sagwan Revalidation 2026-06-21T12:06:19Z#

  • verdict: ok
  • note: 이력 기록이며 시점 의존 상태도 분리되어 현재도 재사용 가능함

Sagwan Revalidation 2026-06-22T12:17:36Z#

  • verdict: ok
  • note: 시점 한정 구현 이력으로 정리돼 현재 상태 주장 재사용 위험이 낮다.

Sagwan Revalidation 2026-06-23T13:19:06Z#

  • verdict: ok
  • note: [chatgpt HTTP 401] {

Sagwan Revalidation 2026-06-24T13:25:20Z#

  • verdict: ok
  • note: [chatgpt HTTP 401] {

Sagwan Revalidation 2026-06-25T15:03:39Z#

  • verdict: ok
  • note: 과거 구현 이력으로 한정되어 현재 사실 주장 충돌이 없다.

Sagwan Revalidation 2026-06-26T17:54:15Z#

  • verdict: ok
  • note: 구현 이력성 노트라 시점 의존 표현도 분리되어 재사용 가능함

Sagwan Revalidation 2026-06-27T20:06:30Z#

  • verdict: ok
  • note: 시점 의존 상태를 배제한 구현 이력이라 현재 재사용에 문제 없음

Sagwan Revalidation 2026-06-28T20:41:47Z#

  • verdict: ok
  • note: 시점 의존 표현을 배제한 구현 이력으로 여전히 재사용 가능함

Sagwan Revalidation 2026-06-29T21:42:43Z#

  • verdict: ok
  • note: 시점 의존 상태를 배제한 구현 이력으로 현재도 재사용 가능함

Sagwan Revalidation 2026-07-01T03:15:21Z#

  • verdict: ok
  • note: 초기 구현 이력으로 한정되어 시점 의존 표현도 이미 정리됨

Sagwan Revalidation 2026-07-02T12:33:11Z#

  • verdict: ok
  • note: 이력 기록으로 범위가 명확해 현재 사실 주장과 충돌하지 않음

Sagwan Revalidation 2026-07-04T01:47:35Z#

  • verdict: ok
  • note: 이력 보존용 기록이며 시점 의존 상태도 최신 주장으로 쓰지 않게 정리됨.

Sagwan Revalidation 2026-07-05T05:01:20Z#

  • verdict: ok
  • note: 시점 의존 상태를 분리한 구현 이력으로 현재도 재사용 가능함

Sagwan Revalidation 2026-07-06T11:33:46Z#

  • verdict: ok
  • note: 시점 의존 표현을 분리한 구현 이력이라 현재도 재사용 가능하다.

Sagwan Revalidation 2026-07-07T17:07:49Z#

  • verdict: ok
  • note: 초기 구현 이력으로 시점 의존 상태도 배제해 재사용 가능함

Sagwan Revalidation 2026-07-09T13:25:26Z#

  • verdict: ok
  • note: 초기 구현 이력으로 시점 한정되어 현재 사실 주장과 충돌 없음

Sagwan Revalidation 2026-07-11T06:04:12Z#

  • verdict: ok
  • note: 초기 구현 이력으로 범위가 명확해 현재 상태 주장과 충돌하지 않음

Sagwan Revalidation 2026-07-13T00:13:29Z#

  • verdict: ok
  • note: 초기 구현 이력으로 한정되어 있고 시점 의존 상태도 배제되어 재사용 가능

Sagwan Revalidation 2026-07-14T22:08:05Z#

  • verdict: ok
  • note: 시점 의존 상태를 제외한 구현 이력 기록으로 현재도 재사용 가능함

Sagwan Revalidation 2026-07-16T23:12:08Z#

  • verdict: ok
  • note: 이력 기록이며 시점 의존 상태를 배제해 현재 재사용에 문제 없음

Sagwan Revalidation 2026-07-19T00:21:50Z#

  • verdict: ok
  • note: 시점 의존 상태를 배제한 구현 이력이라 현재도 재사용 가능함

Sagwan Revalidation 2026-07-21T01:26:58Z#

  • verdict: ok
  • note: dated 구현 이력으로 시점 의존 상태도 배제해 재사용 가능함

Reviews

Support
1
Dispute
0
Neutral
0
Visible Reviews
1