특정 사용자에게 직접 링크가 로드되지 않음, 자세한 설명 포함

여러분 안녕하세요,

조금 특이한 문제일 수 있는데, 오늘 일부 직접 링크가 작동하지 않고 단순히 “로딩” 화면만 표시된 채 실제로는 로딩이 안 되는 것을 발견했습니다.

이미 포럼에 접속해 있는 상태에서 링크를 클릭하면 정상적으로 작동합니다(싱글 페이지 앱 구조라 이해는 합니다).

근데 이게 무슨 원인일까요? 로그인한 상태일 때만 발생하는 것 같습니다.

예를 들어
https://community.cyanlabs.net/
에 접속해서 아무 링크나 클릭하면 문제가 없는데, 예를 들어
https://community.cyanlabs.net/t/sync-3-4-22251-feedback-issues/6515/189
으로 직접 접속하면 이런 현상이 발생합니다.

image

하지만 예를 들어 189번이 아닌 160번 게시물로 접속하면 작동합니다.
https://community.cyanlabs.net/t/sync-3-4-22251-feedback-issues/6515/160
여기서 "게시물이 170개밖에 없는데 왜 그런가"라고 생각하실 수 있지만, 실제로 "맨 아래로"를 클릭하면 URL이 189로 설정되는데도 불구하고 작동하지 않습니다. 이로 인해 잘못된 URL을 복사하게 되고, 다른 곳에 링크를 공유할 때 문제가 발생합니다.

또한, Discourse가 URL이 비효율적(invalid)인 것을 감지해서 특정 게시물 대신 해당 토픽 자체를 로드하는 것이 정상적인 것 아닌가요?


쉽게 수정될 수 있는 문제였으면 좋겠습니다 :thinking:

수정(EDIT): 추가 조사해 본 결과, 몇몇 계정에서만 발생하는 것 같습니다. 지금까지는 제 계정(관리자)과 Louage라는 이름의 모더레이터 계정에서만 발생했습니다. 로그인하지 않으면 정상 작동하고, 테스트 유저로 로그인해도 정상 작동합니다(일반 유저든 모더레이터든). 그런데 제 계정으로 로그인하면 안 됩니다… 헷갈리네요

다른 모더레이터들은 문제없습니다… 정말 이상하네요 :thinking:

맞습니다.

테마 구성 요소나 플러그인(아마 append-tag-apim일지도?) 관련 문제인 것 같습니다. 안전 모드(safe-mode)를 시도해 보세요.

답변 감사합니다. 말씀하신 그 부분이 재미있네요. 방금 그걸 실제로 시도해 봤는데, 안타깝게도 같은 문제가 발생합니다.

저는 제 자체 플러그인인 GitHub - cyanlabs/discourse-append-tag-apim: Simple plugin that appends the apim tag to sync1,sync2,sync3,sync4 tagged topics · GitHub 을 사용하고 있는데, 이 플러그인은 그렇게 많은 일을 하지 않습니다.

https://community.cyanlabs.net/t/sync-3-4-22251-feedback-issues/6515/16022 링크는 로그인하지 않은 상태라면 작동합니다.

문제의 원인이 될 가능성은 낮아 보입니다.

다음 단계로 비공식 플러그인 두 개를 모두 제거하고 다시 빌드하는 것을 제안합니다.

감사합니다. 지금 바로 시도해 보겠습니다. 물론 2명에게만 영향을 준다면 큰 문제가 아니지만, 그 2명뿐 아니라 더 많은 사용자에게 영향을 주고 있는지 확신할 수 없거든요.

참고로 저는 data와 web 컨테이너를 따로 사용하고 있는데, 둘 다 최신 상태라 이게 문제가 될 것 같지는 않은데, 어떻게 생각하시나요?

불행히도 그 방법으로는 운이 없었습니다. 같은 문제가 발생하네요.

다음으로 다른 브라우저를 시도해 보세요.

그 두 사용자만 해당된다면, 그쪽의 문제인 것 같습니다.

다른 사용자에게는 링크가 정상적으로 작동하므로, Discourse의 버그일 가능성은 낮습니다.

브라우저는 차이가 없습니다. 폰의 크롬, 윈도우 크롬, 엣지 등을 시도해 보았는데, 제 계정으로 로그인하면 해당 링크가 작동하지 않습니다. Louage도 마찬가지이고, 다른 모드는 문제없이 작동합니다. 테스트 계정으로 하면 정상 작동합니다.

이것이 Discourse의 버그가 아니라고 어떻게 생각할 수 있는지 모르겠습니다. 사용자 계정 자체에 특이한 문제라고 해도 여전히 Discourse의 버그입니다. 버그가 어디서 발생하는지는 모르겠지만, 이것은 확실히 Discourse 측의 문제입니다. 같은 사용자 컴퓨터(저의 컴퓨터, Discourse에서 다른 로그인된 사용자)에서는 정상 작동하는데 어떻게 사용자의 컴퓨터 문제일 수 있겠습니까?

오류 메시지에 "require"가 정의되지 않았다고 명시되어 있는데, 이는 분명히 이러한 링크를 표시할 때 Discourse에서 무언가가 제대로 로드되지 않는다는 것을 의미합니다.
image

도와주셔서 감사하지만, 이것은 확실히 클라이언트가 아닌 서버 측 문제입니다.

더블 포스트를 올려 죄송합니다. 그런데 이 주제도

그리고

이것도 전혀 작동하지 않는 것을 방금 알아차렸습니다. 이것이 관련이 있을까요?

수정: 아, 실제로는 플래그 플러그인과 관련이 있었지만, 초기 문제는 여전히 지속되고 있습니다.

수정2: 로그 파일 중 어떤 것도 유용한 정보가 없습니다.

Started GET "/t/sync-3-4-22251-feedback-issues/6515/9999" for xxxx at 2023-05-01 16:21:07 +0000
Processing by TopicsController#show as HTML
  Parameters: {"slug"=>"sync-3-4-22251-feedback-issues", "topic_id"=>"6515", "post_number"=>"9999"}
  Rendered topics/show.html.erb within layouts/application (Duration: 8.2ms | Allocations: 7009)
  Rendered layout layouts/application.html.erb (Duration: 19.8ms | Allocations: 16957)
Completed 200 OK in 237ms (Views: 20.3ms | ActiveRecord: 0.0ms | Allocations: 179458)

수정3: 이것은 확실히 discourse 버그인 것 같습니다. 특정 게시물이 문제를 일으키는 것 같아서, 예를 들어 저는
https://community.cyanlabs.net/t/sync-3-4-22251-feedback-issues/6515/341
(341 이하)에는 접근할 수 있지만

https://community.cyanlabs.net/t/sync-3-4-22251-feedback-issues/6515/342
(342 이상)에는 접근할 수 없습니다.

그래서 주제를 분리했는데, 이제 분리된 주제는 깨지지만 원래 주제는 잘 작동하네요. 그래서 이 주제 어딘가에 있는 특정 게시물과 100% 관련이 있는 것 같습니다…

https://community.cyanlabs.net/t/sync-3-4-22251-feedback-issues-archived-replies/8977/150 150번 게시물까지는 작동하는데, 150번 이후로는 작동하지 않네요… 정말 이상하네요.

1개의 좋아요

혹시 일부 사용자만 그런 건가요? 네트워크 관련 문제일까요? 다른 네트워크에서 접속하면 정상적으로 작동할까요?

아니요, 특정 사용자 문제입니다. 브라우저, 네트워크, 기기가 무엇이든, 제가 저(또는 Louage)로 로그인한 상태라면 (가짜 계정 포함) 작동하지 않습니다.

제 생각에는 이 문제는 여전히 Discourse의 버그이므로, Contribute > Bug 채널로 옮겼습니다.

이 문제를 조사하기 위해 재현 단계를 어떻게 정리할 수 있을지 잘 모르겠네요. :thinking:

모든 관리자 계정 및/또는 모더레이터 계정에서 발생하는 문제인가요? /logs에 이 문제를 더 구체적으로 파악할 수 있는 추가적인 정보가 있나요?

그리고 안전 모드(safe mode)를 확인해 보셨나요?

1개의 좋아요

안녕하세요,

아쉽게도 아닙니다. 제 계정(관리자)과 Louage의 계정(모더레이터)에서만 발생하는 문제입니다.

/logs 명령어에서는 아무것도 표시되지 않는데, 로그 주제에서 언급된 모든 로그 파일도 마찬가지입니다.

안전 모드(Safe mode)를 사용해도 차이가 없습니다(위에서 언급했지만 놓치셨을 수 있으니 다시 말씀드립니다).