며칠 전 셀프 호스팅한 Discourse 사이트(Ubuntu 18.04.6, Contabo)에 업데이트가 필요하다는 이메일 알림을 받았고, 업데이트를 진행하려고 관리자 페이지로 이동했습니다. 평소와 마찬가지로 먼저 docker-manager를 업데이트한 후 사이트의 나머지 업데이트를 실행해야 했습니다. 그런데 업데이트가 특정 지점에서 멈춰버렸고, 이후로는 전혀 진행되지 않았습니다. 약 1시간 정도 그렇게 있다가 CLI로 개입해야겠다고 판단하여 서버에 SSH로 접속한 뒤 cd /var/discourse; git pull; ./launcher rebuild app 명령을 실행했습니다. 오류 없이 완료되었지만, 현재 사이트는 다음과 같은 상태입니다:
(실제로는 점들이 애니메이션으로 움직입니다.) 소프트웨어가 시작하는 데 시간이 좀 걸리는 건가 싶어 기다렸는데, 실제로 하루가 넘게 기다렸지만 아무 변화가 없었습니다. 서버를 재부팅하거나 다시 빌드해도 효과가 없었습니다.
흥미롭게도, 사용자는 여전히 이메일로 게시물을 작성할 수 있으며, 사이트도 이를 정상적으로 발송하고 있습니다.
안전 모드가 아닌 상태에서 사이트를 로드하려고 할 때 브라우저 콘솔에서 이 오류를 확인할 수 있습니다:
Uncaught (in promise) Error: Could not find module `admin/models/admin-user` imported from `discourse/plugins/discourse-merge-users/discourse/components/merge-users-form`
c loader.js:247
c loader.js:258
findDeps loader.js:168
c loader.js:262
requireModule loader.js:24
Ember 3
resolveOther resolver.js:241
Ember 5
initialize colocated-template-overrides.js:31
eachThemePluginTemplate colocated-template-overrides.js:41
initialize colocated-template-overrides.js:22
initialize app.js:41
runInstanceInitializers Ember
each dag-map.js:192
walk dag-map.js:121
each dag-map.js:66
topsort dag-map.js:72
Ember 4
invoke queue.ts:201
flush queue.ts:98
flush deferred-action-queues.ts:75
_end index.ts:616
_boundAutorunEnd index.ts:257
promise callback*n/< platform.ts:28
flush Ember
_scheduleAutorun index.ts:803
_ensureInstance index.ts:791
schedule index.ts:384
Ember 6
<anonymous> start-app.js:4
<anonymous> discourse-boot.js:18
<anonymous> discourse-boot.js:19
loader.js:247
이 오류는 discourse-merge-users 플러그인의 문제를 가리키고 있습니다. 해당 플러그인 없이 다시 빌드해 보아 그것이 문제인지 확인해 볼 수 있습니다.
플러그인 토픽을 확인해 보면, 이 플러그인은 비활성화(deprecated)되었으며 이것이 알려진 문제인 것으로 보입니다:
사실상 그것이 문제였던 것 같습니다. 해당 플러그인을 제외하고 다시 빌드하니 문제가 해결되었어요. 다만 공유해주신 토픽에는 문제가 관리자 권한이 없는 사람에게서 나타나는 것처럼 되어 있는데, 저는 관리자 권한이 있습니다. 하지만 플러그인을 비활성화하자 사이트가 다시 정상적으로 작동하는 것 같습니다. 빠르고 핵심을 찌르는 도움 주셔서 감사합니다.