# 채팅 채널에 메시지가 표시되지 않거나 저장되지 않음

**URL:** https://meta.discourse.org/t/a-chat-channel-doesn-t-show-nor-save-messages/261736
**Category:** Bug
**Tags:** chat
**Created:** [4월 14, 2023, 6:58오후 UTC](https://meta.discourse.org/t/a-chat-channel-doesn-t-show-nor-save-messages/261736 "2023-04-14T18:58:33Z")
**Posts on this page:** 14
**Page:** 1

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [4월 14, 2023, 6:58오후 UTC](https://meta.discourse.org/t/a-chat-channel-doesn-t-show-nor-save-messages/261736/1 "2023-04-14T18:58:33Z")

</div>

몇 시간 전에 업그레이드를 했는데, 이제 커스텀 그룹이 있는 모든 채널이 빈 채널로 표시됩니다. 메시지를 작성하고 보낼 수는 있지만, 로그아웃하거나 페이지를 새로고침하면 채널에 히스토리가 남아 있지 않습니다.

로그에는 다음이 표시됩니다:

```plaintext
Message

NoMethodError (undefined method `replies_count' for nil:NilClass)
(eval):17:in `_fast_attributes'
app/controllers/application_controller.rb:545:in `render_json_dump'
app/controllers/application_controller.rb:532:in `render_serialized'
app/controllers/application_controller.rb:414:in `block in with_resolved_locale'
app/controllers/application_controller.rb:414:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:74:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:369:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:228:in `call'

Backtrace

plugins/chat/app/serializers/chat/message_serializer.rb:161:in `thread_reply_count'
(eval):17:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:468:in `rescue in attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:455:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:89:in `block in _serializable_array'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:79:in `map'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:79:in `_serializable_array'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:73:in `serializable_array'

Env

HTTP HOSTS: foorumi.katiska.eu

```

혹시 아이디어가 있을까요?

**수정** :

만약 이것이 의미하는 바가 있다면, 이상하게 동작하는 채널들은 이전에 하위 카테고리였으나, 제가 이를 상위 카테고리로 변경했습니다.

하지만 사용자들은 그 변경 사항 이전부터 문제가 있었다고 주장하고 있습니다.

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [4월 14, 2023, 8:16오후 UTC](https://meta.discourse.org/t/a-chat-channel-doesn-t-show-nor-save-messages/261736/2 "2023-04-14T20:16:18Z")

</div>

안녕하세요,

혹시 실험적(그리고 숨겨진) 스레드 설정을 사용해 본 적이 있으신가요?

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [4월 14, 2023, 8:19오후 UTC](https://meta.discourse.org/t/a-chat-channel-doesn-t-show-nor-save-messages/261736/3 "2023-04-14T20:19:45Z")

</div>

오래전에 무언가를 변경했는데… 정확히 뭘 바꿨는지는 기억나지 않아요. 하지만 나중에 더 이상 실험적이지 않게 된 내용이었을 거라고 꽤, 아니 거의 확신합니다.

혹시 기억나시는 게 있으세요?

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [4월 14, 2023, 8:21오후 UTC](https://meta.discourse.org/t/a-chat-channel-doesn-t-show-nor-save-messages/261736/4 "2023-04-14T20:21:32Z")

</div>

아직 실험 단계이고 숨겨져 있는 상태입니다. 여기서 '숨겨져 있다’는 것은 여러분이 이 기능을 자유롭게 실험할 수 있다는 뜻이죠 🙂 저는 단순히 발생할 수 있는 문제 목록을 좁혀 보려는 것입니다.

에러 메시지는 스레드가 한 번도 생성되지 않은 상태에서 접근해서는 안 되는 코드를我们正在 접근하고 있음을 명확히 보여주고 있어, 이는 의외의 결과입니다.

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [4월 14, 2023, 8:25오후 UTC](https://meta.discourse.org/t/a-chat-channel-doesn-t-show-nor-save-messages/261736/5 "2023-04-14T20:25:00Z")

</div>

여기서 찾은 것들만 변경했고, 검색 결과에서 관련 항목이 나타나지 않았을 경우입니다.

Rails는 기본값에서 더 이상 존재하지 않는 항목을 표시할 수 있을까요?

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [4월 14, 2023, 8:49오후 UTC](https://meta.discourse.org/t/a-chat-channel-doesn-t-show-nor-save-messages/261736/6 "2023-04-14T20:49:30Z")

</div>

30분 이내에 이 내용을 병합하겠습니다. 그러면 해당 문제가 해결될 것입니다. 다음 주에 더 자세히 조사하겠지만, 주말 내내 이 문제로 막혀 계시길 원치 않습니다.

> <https://github.com/discourse/discourse/pull/21099>
>
> It is yet to investigate the exact reasons leading to this, but probably due to …some delete operation or migration, it seems possible to have a \`message\` with a \`thread\_id\` leading to a non existing thread row. This is only a temporary solution to prevent the crash. We should also probably be more defensive here and not include any of this if threading is not enabled.

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [4월 14, 2023, 8:54오후 UTC](https://meta.discourse.org/t/a-chat-channel-doesn-t-show-nor-save-messages/261736/7 "2023-04-14T20:54:40Z")

</div>

좋아요!

그래도 도대체 제가 뭘 망쳤는지 이해하고 싶어요… 그때는 검색 개선 관련 설정과 비슷한 항목들만, 그것도 그 당시에는 새로운 설정들이라 변경한 것으로 거의 확신합니다.

하지만 솔직히 말하면… 어떤 기능이 주제(topic)를 조금이라도 더 좋게 만들 수 있을 것 같으면 시도해 보는 성향이 있고, 아무 일도 일어나지 않으면 바로 잊어버립니다.

(그리고 저는 게으른 문서화에 대해 계속 잔소리를 늘어놓는 중이죠 🤦‍♂️ )

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [4월 14, 2023, 9:03오후 UTC](https://meta.discourse.org/t/a-chat-channel-doesn-t-show-nor-save-messages/261736/8 "2023-04-14T21:03:14Z")

</div>

지금으로서는 더 나은 답변을 드리기 어렵지만, 다음 주에 이 문제를 조사할 예정입니다. 방금 병합을 완료했습니다. 이제 오프라인에 들어갑니다. 문제가 해결되지 않으면 알려주세요. 내일 확인하겠습니다.

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [4월 14, 2023, 10:52오후 UTC](https://meta.discourse.org/t/a-chat-channel-doesn-t-show-nor-save-messages/261736/9 "2023-04-14T22:52:57Z")

</div>

먼저 말씀드리자면, 그 수정이 도움이 되지 않았습니다. 죄송합니다. 아니면 도움이 되긴 했는데 — 그 오류가 좀 이상했거든요.

제발 제 말을 따라봐 주세요 😉

저는 채널을 5개 가지고 있습니다:

- TL1용 3개
- 스태프용 1개
- 5명으로 구성된 커스텀 그룹용 1개

스태프 채널을 제외한 나머지 채널들을 서브카테고리에서 최상단으로 이동시켰습니다.

그 후 카테고리 미리보기 컴포넌트가 어떻게 작동하는지 테스트해 보았지만, 제가 필요로 하는 기능이 아니어서 비활성화했습니다. 바로 그 직후 카테고리 락다운 플러그인을 설치하기 위해 리빌딩을 수행했습니다.

작동은 했지만, FKB Pro 테마와 로그인/가입 모달에서 몇 가지 이상한 문제가 발생했습니다 — 로딩 중 아이콘만 계속 도는 현상이었죠. 제 iPad에서만 그런 것 같았습니다.

그 시점에서 커스텀 그룹의 채팅 채널이 더 이상 작동하지 않는다는 것을 알게 되었습니다. 게다가 스태프 그룹과 TL1 그룹 3개 중 2개는 아주 최근의 메시지들만 표시되고 있었습니다. TL1 그룹 1개는 멀쩡했습니다.

세이프 모드를 시도하고 설정을 통해 대부분의 플러그인을 비활성화해 보았지만, 도움이 되지 않아 이 토픽을 열었습니다.

장황하게 설명을 드리자면, 여러 번의 리빌딩과 플러그인 제거 및 재활성화 끝에:

- 스태프 채널과 TL1 채널 두 개는 트래픽이 적은 곳이라서 제가 그곳에서 14일 규칙을 사용 중이라는 사실을 완전히 잊고 있었습니다. 그래서 문제가 없었던 거죠.
- 커스텀 그룹 채널은 [Data Explorer](https://meta.discourse.org/t/32566?silent=true)와 Category Lockdown 플러그인이 모두 설치된 상태에서는 깨져 있었고, 활성화/비활성화 여부와는 무관했습니다.
- 이 두 플러그인 없이 리빌딩을 수행하자 그 깨진 채널이 복구되었습니다. 두 플러그인을 모두 다시 설치한 상태로 다시 리빌딩(_이게 말이 되나요?_)했을 때에도 그 채널은 여전히 정상 작동했습니다.

제 무지한 추측으로는, 처음에 Category Previews를 시도했을 때 무언가 어긋나기 시작했고, 그 후 비활성화했으며, Category Lockdown으로 리빌딩을 했고, 마지막 단계로 Category Previews를 삭제한 것이 원인일 것 같습니다. 몇 가지 기이한 SQL 오류나 잘못된 데이터를 수정하기 위해 [Data Explorer](https://meta.discourse.org/t/32566?silent=true)와 Lockdown을 완전히 제거하고, 더 최신 버전으로 재설치하는 과정이 필요했습니다.

이해가 안 되는 부분은 Discourse의 오류 로그입니다. 이 모든 일과 어떻게 연결되는지 모르겠습니다.

어쨌든. 이제 모든 플러그인이 다시 온라인 상태이고 채널들도 잘 작동하고 있습니다.

---

<div class="post-metadata">

### Author: ![martin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/martin/32/491371_2.png) [@martin](https://meta.discourse.org/u/martin)
#### Post date: [4월 17, 2023, 12:18오전 UTC](https://meta.discourse.org/t/a-chat-channel-doesn-t-show-nor-save-messages/261736/10 "2023-04-17T00:18:23Z")

</div>

안녕하세요 @Jagster, 저도 채팅 팀 소속으로 이 문제를 좀 더 자세히 조사하고 있습니다. 작성해 주신 내용을 확인해 보니, 해당 오류가 발생한 원인이 될 만한 부분은 없어 보입니다. 각 채팅 메시지는 데이터베이스의 채팅 스레드와 `thread_id`를 통해 연결될 수 있으며, 어떤 이유로든 작성자님의 메시지 중 하나가 존재하지 않는 스레드의 `thread_id`를 참조하고 있습니다. 스레드를 삭제하는 코드가 없으므로, 아마도 어떤 업데이트 과정에서 문제가 생긴 것 같습니다.

아래 쿼리를 실행해 주시고 결과를 공유해 주시겠어요? 이를 통해 문제가 광범위하게 발생한 것인지, 아니면 단순히 특이한 엣지 케이스인지 확인할 수 있습니다:

```sql
SELECT id, chat_channel_id, thread_id
FROM chat_messages
WHERE thread_id IS NOT NULL AND thread_id NOT IN (
  SELECT id FROM chat_threads
);

```

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [4월 17, 2023, 7:46오전 UTC](https://meta.discourse.org/t/a-chat-channel-doesn-t-show-nor-save-messages/261736/11 "2023-04-17T07:46:19Z")

</div>

[Data Explorer](https://meta.discourse.org/t/32566?silent=true)를 사용했고, 다음 결과를 얻었습니다 (JSON을 읽을 수 있으시죠 😉 )

`{"success":true,"errors":[],"duration":0.5,"result_count":2,"params":{},"columns":["id","chat_channel_id","thread_id"],"default_limit":1000,"rows":[[10721,14,152],[10744,14,152]]}`

문제가 발생한 채널의 ID는 14였습니다.

---

<div class="post-metadata">

### Author: ![martin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/martin/32/491371_2.png) [@martin](https://meta.discourse.org/u/martin)
#### Post date: [4월 18, 2023, 2:34오전 UTC](https://meta.discourse.org/t/a-chat-channel-doesn-t-show-nor-save-messages/261736/12 "2023-04-18T02:34:19Z")

</div>

감사합니다. 이 버그에 대해서는 다음과 같은 이유로 "관망"하는 방식을 취할 것 같습니다:

1. 원인이 명확하지 않고
2. 확인해 본 몇몇 사이트에서는 재현되지 않았으며
3. 상대방 사이트에서도 한 곳에서만 발생한 경우입니다

추가로 확인해 볼 수 있는 방법은 아래 쿼리를 실행해 보는 것입니다:

```sql
SELECT * FROM chat_threads WHERE id = 152;

```

결과가 아무것도 반환되지 않는지 확인해 주세요.

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [4월 18, 2023, 7:45오전 UTC](https://meta.discourse.org/t/a-chat-channel-doesn-t-show-nor-save-messages/261736/13 "2023-04-18T07:45:29Z")

</div>

확인했습니다. 제로, 아무것도 없습니다

> [@martin](#):
>
> 이 버그에 대해서는 일단 지켜보자는 접근 방식을 따르는 것 같습니다.

네. 아무것도 찾을 수 없다면 수정하기가 정말 어렵습니다.

고마워요, 여러분!

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [7월 12, 2023, 5:09오후 UTC](https://meta.discourse.org/t/a-chat-channel-doesn-t-show-nor-save-messages/261736/14 "2023-07-12T17:09:10Z")

</div>


