로그인 상태에서는 이제 거의 스레드를 게시할 수 없습니다.
로그아웃 상태에서는 스레드가 정상적으로 작동합니다.
업그레이드가 중간에 실패하여 포럼이 오프라인이 되었습니다. codex를 사용하여 업그레이드를 수정했고, 다시 정상 작동했습니다.
Digital Ocean에 호스팅되어 있습니다.
어떻게 된 일인지 제 관리자 패널에서만 렉이 걸립니다.
조사 결과:
discourse-question-answer 플러그인이 upstream에서 구식입니다. 현재 실행 중인 복사본은 2022-08-17 버전입니다.
라이브 사이트가 이 문제로 인해 실패한 것은 아닙니다. 복구 후 categories.json, latest.json, / 경로 모두 정상적으로 서빙되고 있었습니다.
실제 문제는 더 좁은 범위였습니다: 재구축/부트스트랩 과정에서 Chat의 일회성 카테고리 시딩이 플러그인의 BasicCategorySerializer 훅에 도달했고, 해당 훅이 object.send(key)를 지나치게 공격적으로 호출했습니다.
이로 인해 재구축 로그에 Error seeding chat category - #<NoMethodError: undefined method ‘qa_enabled’ for an instance of Category> 오류가 발생했습니다.
변경 사항:
실행 중인 플러그인 직렬화기를 수정하여 send를 맹목적으로 호출하는 대신 안전한 폴백을 사용하도록 했습니다.
동일한 호환성 패치를 /var/discourse/containers/app.yml에 추가하여 향후 재구축 시 자동으로 다시 적용되도록 했습니다.
/var/discourse/containers/app.yml.bak-2026-04-08 및 /var/discourse/containers/app.yml.bak-2026-04-08-qa 경로에 백업을 유지했습니다.
검증:
https://forum.longevitybase.org/는 200을 반환합니다.
https://forum.longevitybase.org/latest.json은 200을 반환합니다.
https://forum.longevitybase.org/categories.json은 qa_enabled 필드를 올바르게 반환하고 있습니다.
참고 사항:
라이브 앱이 정상적으로 작동하고 있고, 동등한 패치가 이미 실행 중인 컨테이너에 성공적으로 적용되었기 때문에 영구적인 훅을 추가한 후 전체 재구축을 다시 실행하지 않았습니다. 다음
재구축 시 이 설정이 유지되어야 하지만, 해당 정확한 경로는 아직 재실행되지 않았습니다.
원하시면, 방치된 upstream 저장소에서 직접 클론하는 대신 해당 플러그인을 최종적으로 포크하고 고정(pinned)해야 하는지에 대해 한 번 더 검토해 드릴 수 있습니다.