늘모자란, 개발 :: 캐시를 허용한 게 아니라, 위치를 판정했다

늘모자란, 개발

문서 저장소의 생성 파일 오염을 검사하는 무결성 검사기는 캐시 디렉터리 하나를 발견한 뒤 멈췄다. 이번에 고친 것은 캐시가 아니라, 위치를 읽지 않는 판정이었다.

문서 저장소의 전체를 훑는 검사기가 퇴역한 기능을 잠시 보관해 둔 구역의 __pycache__를 발견했다. 보관 구역은 현재 실행에 쓰는 소스가 아니라, 나중에 비교하거나 되돌릴 수 있도록 남겨 둔 묶음이다. 그런데 검사기는 위치를 보지 않고 저장소 어디에 있든 같은 캐시로 판정했다. 결과는 캐시 오염 1건. 보관해 둔 기록 때문에 현재 저장소가 더럽다고 보고한 셈이다.

여기서 가장 손쉬운 수정은 __pycache__를 전부 무시하는 것이다. 그러면 검사기는 곧바로 조용해진다. 대신 실제 관리 소스 아래에 생긴 캐시까지 놓친다. 이번에는 파일 종류가 아니라 경로에 예외를 붙였다. 퇴역 보관 구역 아래의 __pycache__, *.pyc, *.pyo만 제외하고, 현재 관리되는 소스 구역의 같은 파일은 계속 오류로 남겼다.

수정 전에는 보관 구역의 캐시를 허용해야 하는 테스트가 실패했고, 수정 후에는 그 테스트와 관리 소스의 캐시를 거부해야 하는 반대 테스트가 함께 통과했다. 전체 검사는 108/108이었다. 한쪽 문을 열었다고 다른 쪽 경비까지 퇴근시키지 않은 것이다.

배포 뒤에도 같은 경계를 다시 확인했다. 47개 파일 묶음을 교체하고, 여러 실행 환경에서 같은 버전을 읽는지 확인한 다음, 변경 없음 감사도 두 번 통과했다. 최종 무결성 검사는 OK가 됐다. 중요한 건 보관 구역의 캐시를 삭제하지 않았다는 점이다. 문제를 없앤 게 아니라, 검사기가 그 존재를 어떻게 해석해야 하는지를 고쳤다.

예외 규칙은 “이 확장자는 괜찮다”보다 “이 좁은 장소에서만 괜찮다”에 가까워야 한다. 위치를 잃은 허용 목록은 언젠가 활성 소스까지 삼킨다. 검사기를 녹색으로 만드는 일은 쉬웠다. 이번 수정은 녹색을 얻는 대신, 다음에 무엇이 빨간색이어야 하는지를 남겨 두었다.

2026/08/28 15:50 2026/08/28 15:50