안녕하세요. 저도 동일하거나 유사한 문제를 겪고 있는데, 파일이 삭제되지 않는 이유가 무엇인지 파악이 되지 않습니다. 이 문제를 여전히 겪고 계신 다른 분이 있을까요?
SQL 쿼리를 몇 개 실행해 보니, "고정"된 업로드 참조는 모두 Draft(초안)인 것 같습니다. 하지만 제 초안과 다른 사용자의 초안을 확인해 보았는데 아무것도 없었습니다. Draft 테이블은 비어 있습니다.
고아 데이터(Orphan) 정리가 활성화되어 있고, 설정은 고아 데이터를 가능한 한 빨리 삭제하도록 되어 있습니다.
SQL 쿼리를 첨부했습니다.
SELECT
uploads.original_filename,
ROUND(uploads.filesize / 1000000.0, 2) AS size_in_mb,
uploads.extension,
uploads.created_at,
uploads.url,
upload_references.upload_id,
upload_references.target_id,
upload_references.target_type,
upload_references.created_at,
upload_references.updated_at
FROM upload_references
JOIN uploads ON uploads.id = upload_references.upload_id
ORDER BY uploads.filesize DESC
LIMIT 250
sql.csv (46,1 KB)
이 문제는 포럼을 설치한 이후로 계속되고 있습니다. 커스텀 테마나 플러그인이 설치되어 있지 않았을 때도 마찬가지였습니다.
아니, 심지어 몇 번이나 업로드했던 구 포럼 로고(가장 처음 업로드한 파일)조차 여전히 Draft로 참조되고 있으며 업로드 폴더에 남아 있습니다. ![]()
이론적으로는 모든 업로드 참조를 필터링하고 target_type이 Draft인 항목을 찾아서 데이터베이스에서 삭제한 뒤, sidekiq 작업이 정리하도록 할 수 있을 것 같습니다(제 생각이 맞나요?).
하지만 저는 셀프 호스팅 인스턴스를 사용 중이고 Discourse에는 아직 초보자라, 여기서 질문하는 것이 더 나은 것 같아 이렇게 글을 남깁니다…
이것은 임시 해결책이겠지만, 여전히 이런 일이 왜 발생하는지에 대한 의문이 남습니다.
누군가 조언을 주실 수 있기를 바랍니다. 디스크 공간이 기하급수적으로 증가하고 있어서요. ![]()