삭제될 WAL, MANIFEST, sstable을 보관하는 기능 제공 (Pebble issue #284)

개요

이슈: https://github.com/cockroachdb/pebble/issues/284

이번에는 Pebble에서 아무에게도 할당되지 않은 이슈를 선택해 수정했습니다.

이슈 파악

현재 WAL, MANIFEST, sstable이 삭제대상이 되면 바로 삭제되고 있는데, 디버그 목적으로 해당 파일을 유지하길 원했습니다. RocksDB에도 유사한 옵션이 있는데, vfs.FS.Remove 처리를 가로채 archive 폴더에 저장하는 것을 제안했습니다.

수정

처음에는 Cleaner 타입을 enum으로 구분하여 구현했습니다. 하지만 리뷰에서 interface를 사용하는 것을 제안받아 그 방향으로 구현을 수정했습니다(Go에서 interface는 매우 놀랍습니다. 저는 덕타이핑이 되는 interface라는 표현을 좋아합니다.). 그 외 큰 변경사항은 없었고 몇 가지 작은 수정을 거친 후 머지되었습니다.

덧붙이는 말

  • 이 글은 오픈소스 프로젝트의 이슈 해결에 대한 저의 접근 방법을 공유하여, 처음 스프린트에 참가하는 참가자들을 진입장벽을 낮추기 위해 작성되었습니다. 좋은 의견이 있으면 댓글로 공유 부탁드립니다.
  • 카크로치 디비 이슈 해결은 스프린트 태그로 연재되고 있습니다.
  • 함께 기여하고 싶은 분들은 2019년 10월 26일, 스프린트서울에 참가해 주십시오.