ai-coding-mines목차GitHub

공유 상태 파일에 소유자가 없으면 통째로 덮인다

Python · DB

증상

JSON 상태 파일 하나를 3개 이상이 읽고 2개가 쓴다(30분 크론 · 16분 크론 · 수동 배치). read-modify-write 사이에 다른 쓰기가 끼면 그 사이 변경분이 통째로 사라진다.

해법 (세 개가 다 필요하다)

  1. fcntl.flock
  2. 락을 잡은 뒤 재로드 — 락만으로는 부족하다. 락 획득 전에 읽은 값으로 쓰면 그 사이 변경분이 사라진다
  3. os.replace로 원자적 교체

진행 파일명 충돌과 같은 뿌리다: 공유 자원에 소유자가 없다.

유실 0이었던 날도 있었지만 순전히 운이었다.