Files
homeclaw/src/config
kimandClaude Opus 5 de738c3abd fix: config.json 원자적 쓰기 + 동시 저장 직렬화
updateConfig()는 fire-and-forget이고 호출 지점이 41곳(대부분 HTTP 라우트)인데
saveConfig()가 평범한 writeFile을 써서, 두 저장이 겹치면 파일이 깨졌다.
writeFile은 truncate 후 청크 단위로 쓰기 때문에 짧은 쪽이 온전히 기록된 뒤
긴 쪽의 남은 청크가 자기 fd 오프셋에 덧붙어, 유효한 JSON 뒤에 "}}" 조각이
붙은 형태가 된다. 재현 시 200회 중 196회 손상, 실제 손상 파일과 꼬리 패턴 일치.
2026-08-08 밤부터 08-09 새벽까지 세 번 발생했다.

- temp 파일에 쓰고 fsync 후 rename (같은 파일시스템 내 원자적 교체)
- writeQueue 프라미스 체인으로 동시 저장 직렬화
- 파싱 실패 시 config.json.corrupt-<timestamp>로 백업.
  DEFAULT_CONFIG 폴백 상태에서 updateConfig가 한 번만 돌아도 기본값이
  파일을 덮어써 29개 섹션(NVR/collabora/email/telegram 등)이 영구 소실된다.

검증: 재현 테스트 196/200 → 0/200, 임시 파일 누수 없음.
라이브 API 동시 저장 6건에도 config 정상.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-09 01:03:59 +09:00
..
2026-04-29 11:45:59 +09:00
2026-04-29 11:45:59 +09:00
2026-05-06 22:45:28 +09:00