업데이트 후 'boomarks.post_id' 열이 정의되지 않음

discourse 설치를 2.9.0.beta9에서 2.9.0.beta11로 업데이트한 후, 모든 토픽 목록 조회 호출이 갑자기 column bookmarks.post_id does not exist를 반환하면서 설치가 완전히 멈췄습니다.

이 컬럼을 삭제하는 커밋을 f8939bd294ff6822a61fb653b44a4df351321f54로 추적했습니다. 해당 커밋은 데이터베이스에서 컬럼을 삭제합니다. 안전 모드에서도 문제가 발생하므로 플러그인이 원인이라고 생각하지 않습니다.

스택 트레이스:

app/models/topic_list.rb:84:in `topics'
app/serializers/suggested_topics_mixin.rb:17:in `include_suggested_topics?'
(eval):6:in `_fast_attributes'
app/controllers/topics_controller.rb:1199:in `block (2 levels) in perform_show_response'
app/controllers/topics_controller.rb:1194:in `perform_show_response'
app/controllers/topics_controller.rb:169:in `show'
app/controllers/application_controller.rb:413:in `block in with_resolved_locale'
app/controllers/application_controller.rb:413:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:366:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:202:in `call'
Failed to handle exception in exception app middleware : ActiveRecord::StatementInvalid : PG::UndefinedColumn: ERROR:  column bookmarks.post_id does not exist
LINE 1: ...marks"."bookmarkable_type" FROM "bookmarks" WHERE "bookmarks...

도움을 주시면 감사하겠습니다.

일단 데이터베이스에 해당 컬럼을 다시 추가해서 임시로 해결했지만, 근본 원인을 수정하는 것이 더 좋다고 생각합니다 :grimacing:

추가적인 진단이 필요하시면 컬럼을 다시 삭제할 수 있습니다.

정말 혼란스럽습니다. 이 열은 꽤 오랫동안 무시되어 왔거든요.

@martin 이 이 열을 제거해야 했습니다. 더 이상 사용하지 않는 항목이므로요.

사용자가 커스텀 설정을 사용 중입니까? 특정 플러그인이 관련되어 있습니까? 에러는 마이그레이션이 실행될 때 발생했던 일시적인 것이었습니까? (웹 인터페이스를 통한 라이브 업데이트 중, 비정상적인 조건에서 이 에러가 발생할 수 있을 것으로 예상됩니다)

오늘 업데이트를 진행하면서 동일한 문제를 겪었습니다. post_id 컬럼을 다시 추가하니 문제가 해결되었습니다.

단계:

  1. discourse 컨테이너에 진입합니다.
./launcher enter app
  1. psql을 실행합니다.
sudo -u postgres psql discourse
  1. bookmarks 테이블에 post_id 컬럼을 다시 추가합니다.
ALTER TABLE bookmarks ADD COLUMN post_id int;

기본 Docker 설정에 몇 가지 플러그인을 사용 중이지만, 안전 모드에서도 재현할 수 있었습니다. 또한 스택 트레이스에 플러그인에 대한 명확한 참조가 포함되어 있지 않습니다.

마이그레이션 중에 오류 없이 전체 재빌드를 수행하여 업데이트했습니다. 마이그레이션을 다시 실행해 보았지만 변경 사항이 없다고 보고되었습니다.

혼란스러우시네요…

아래 단계를 시도해 보실 수 있을까요?

  1. 해당 컬럼을 다시 삭제
  2. 컨테이너 재시작 ./launcher restart app

에ラー가 여전히 발생하나요?

컬럼을 추가할 필요는 없습니다.

오류가 처음 발생했을 때 재시작을 이미 시도해 보았습니다. 확인을 위해 다시 시도해 보았지만, 여전히 오류가 지속됩니다. 테마 구성 요소가 문제를 일으키고 있을까요? krita-artists.org와 저희 인스턴스 사이에 발견한 유사점 중 하나가 바로 topic-list-preview 테마 구성 요소였습니다. 관련 내용은 여기서 언급되었습니다: Oops. The software powering this discussion forum encountered an unexpected problem - #10 by raghukamath

테마 컴포넌트가 이 문제를 일으킬 가능성은 매우 낮습니다. 사용 중인 플러그인의 전체 목록을 알려 주시겠습니까?

한 번 더 시도해 주시겠습니까?

문제를 찾았어요 :partying_face: 결국 플러그인 문제였네요 :sweat_smile:

Topic List Previews (TLP) 의 이전 버전은 플러그인으로 배포되었다가, 이후 플러그인과 테마 컴포넌트로 분리되었습니다. 이 초기 분리 과정에서 사용자에게 새 브랜치에서 플러그인을 로드하도록 안내되었습니다. 그러나 시간이 지나면서 해당 브랜치는 방치되어 더 이상 유지보수되지 않게 되었습니다. 유지보수 중인 포크로 전환한 후, 모든 것이 다시 정상적으로 작동합니다.