Orioni
(John)
5월 28, 2026, 10:00오전
1
이 아름다운 목요일 아침에, 흥미로운 난제를 하나 가져왔습니다. 제 사이트에서 잘못된 미읽음 카운터가 표시되는 것 같습니다.
발생 상황
상단 네비게이션에 Unread (14)라고 표시됩니다. 하지만 클릭하여 /unread 페이지로 이동하면 미읽음 토픽이 하나도 목록에 없습니다. 페이지에는 더 이상 미읽은 것이 없다고 나와 있습니다.
다른 비스태프(비관리자) 사용자들도 동일한 문제를 보고 있으며, 다만 미읽음 수가 서로 다릅니다.
iOS용 Discourse 앱에서도 미읽음 토픽이 없는데 미읽음 수가 표시되는 것을 확인할 수 있으며, 이 경우에도 수치가 때때로 다릅니다.
플랫폼: 데스크톱 웹 및 iOS용 Discourse 앱
영향 대상: 여러 사용자
사이트: eurth.org
테스트한 내용
안전 모드(Safe Mode )에서 테스트했습니다:
https://eurth.org/?safe_mode=no_themes,no_plugins
https://eurth.org/unread?safe_mode=no_themes,no_plugins
해당 모드에서도 문제가 여전히 발생하므로, 테마나 클라이언트 사이드 플러그인 커스터마이징으로 인한 것으로 보이지 않습니다. 토픽에 속삭임(whispers)이 없으므로, 그 때문일 가능성도 낮습니다.
또한 무시(Dismiss) 기능도 사용할 수 없는데, 미읽음 목록이 비어 있을 때 /unread 페이지에는 무시 버튼이 없기 때문입니다.
기대되는 동작
네비게이션에 Unread (14)라고 표시된다면, /unread 페이지에서 14개의 미읽음 토픽을 확인하거나, 최소한 일부 미읽음 토픽이 표시되어야 합니다.
실제 동작
네비게이션에 Unread (14) 표시
/unread 페이지가 비어 있음
무시(Dismiss) 버튼 사용 불가
안전 모드에서도 문제 지속
질문
단일 사용자의 미읽음 상태를 재구성/초기화하는 알려진 방법이 있습니까?
/unread 페이지가 비어 있는 경우에도 미읽음 수가 유지되도록 만드는 서버 측 불일치가 있습니까?
이전에 ask.discourse.org의 AI에게 이 문제에 대해 질문한 적이 있으며, 결국 이곳에 버그 리포트를 게시하라는 조언을 받았습니다.
2개의 좋아요
Lilly
(Lillian )
5월 28, 2026, 10:15오전
2
아, 유령 미읽기 알림이 당신의 사이트를 물었네요!
최근에 카테고리 권한을 변경했거나, 일부 주제를 보안 카테고리로 이동시킨 적이 있나요? 무언가가 추적 상태를 변경한 것 같습니다.
다른 사용자들도 같은 문제를 겪고 있다면, 모든 사용자에게 초기화를 적용하고 싶지 않나요?
레일즈 콘솔(rails console)을 통해 이 문제를 모든 사용자에게 수정할 수 있다고 생각하지만, 다소 까다롭고 먼저 방법을 찾아서 테스트해 봐야 합니다. 지금은 모바일로 접속 중이지만, 다른 사람이 해결책을 올리지 않는다면 잠시 후 해결책을 올리도록 하겠습니다.
2개의 좋아요
안녕하세요,
해당 버그를 인지하고 있으며 해결을 위해 노력하고 있습니다. 모두 이 문제로 인해 짜증이 나고 있습니다
9개의 좋아요
Orioni
(John)
5월 28, 2026, 11:35오전
4
네. 비공개로, 저희 스태프가 #documentation과 유사한 카테고리를 작업하고 있었으며, 완료된 직후 공개되었습니다.
네, 그렇습니다. 제 생각은 먼저 저에게 테스트를 해보고, 그런 다음 모든 사용자를 위해 수정하는 것이었습니다. 이 버그는 테스트하기가 매우 복잡하기 때문에(적어도 제게는), 작동하는 해결책이 나올 때까지 모든 사람의 기대를 높이고 싶지 않았습니다.
신뢰해 주셔서 감사합니다. 오늘 아침 2026년 5월 월간 릴리스 v2026.05를 확인하고 문제가 해결될 것 같았지만, 여전히 지속되고 있습니다. 팀이 대응하고 있을 것으로 확신합니다. Discourse는 훌륭합니다.
아이고. 솔직히 관련 Contribute > Bug 보고서를 모두 살펴봤습니다. 잠시 동안은 “읽지 않음” 탭을 내비게이션에서 숨기고 그냥 무시하는 것도 고려했습니다. 하지만 그것으로 뭐가 해결되나요? 여기 메타에서도 저를 따라다니는 것 같습니다.
1개의 좋아요
Lilly
(Lillian )
5월 28, 2026, 1:41오후
5
좋아요, 이 rails 스크립트는 전역적인 “모두 읽음으로 표시” 기능을 수행하여 모든 사용자 의 unread 카운트를 0으로 강제 재설정합니다. 따라서 유령 상태의 읽지 않음 항목뿐만 아니라 합법적인 읽지 않음 카운트도 함께 초기화됩니다. rails에서 sql 명령어로 이를 수행할 수 있습니다. 다만 근본적인 버그를 수정하는 것은 아닙니다. 또한 최근 백업이 있다면 좋은 방법이지만, 제 개발 포럼에서 테스트해보니 잘 작동했습니다.
cd /var/discourse
./launcher enter app
rails c
아래 전체 블록을 붙여넣고 엔터를 누르세요
sql = <<~SQL
UPDATE topic_users
SET last_read_post_number = topics.highest_post_number
FROM topics
WHERE topics.id = topic_users.topic_id
AND COALESCE(topic_users.last_read_post_number, 0) < topics.highest_post_number
AND topic_users.notification_level IN (2, 3, 4) -- Tracking, Watching, Watching First Post
SQL
# 업데이트 실행
result = ActiveRecord::Base.connection.execute(sql)
puts "Successfully cleared #{result.cmd_tuples} unread topics site-wide."
# 클라이언트 브라우저가 캐시된 상태를 폐기하고 데이터베이스와 동기화하도록 강제
MessageBus.publish("/topic-tracking-state", { clear: true })
사용자들은 초기화된 unread 상태를 확인하려면 강제 새로고침을 해야 할 수 있습니다.
4개의 좋아요
Orioni
(John)
5월 28, 2026, 4:32오후
6
백업 실행. 백업 다운로드. 서버에 SSH로 접속. 스크립트 실행.
문제 해결.
@Lilly , 정말 감사합니다. 선택지가 있었다면 해결책으로 표시했을 텐데, 대신 부스트를 드릴게요. 좋은 하루 보내세요!
2개의 좋아요
sam
(Sam Saffron)
5월 29, 2026, 4:53오전
7
참고로, 배포가 완료되면 유령 미읽음 알림은 사라질 것입니다:
Discourse has a special post type that denotes “small action”.
It looks like this:
[image]
This happens when you close or open topics; it can happen when you assign topics and in various other conditions.
Over the years, we have heard many complaints from people who simply do not want to be notified about this administrivia. This is particularly noticeable when admins bulk close topics or can come as a surprise when topics are auto-closed due to timers.
We are partway through rolling out a…
너무 오래 걸리지 않기를 바랍니다
7개의 좋아요
RalfJung
(Ralf Jung)
6월 1, 2026, 7:41오전
9
유령 미읽음이라는 건 실제로는 읽지 않은 메시지가 없고 단순히 카운트가 잘못 표시된다는 뜻인가요?
최근 여러 디스커스 인스턴스에서 정반대 사례를 목격했습니다. 분명히 읽지 않은 메시지가 있었고 카운트도 정확했는데, “미읽음” 페이지에 해당 메시지가 표시되지 않는 상황이었습니다.
여기서 논의 중인 버그와는 다른 문제처럼 들리는데, 제 버그 보고서 는 이 문제의 중복으로 처리되어 닫혔습니다.
sam
(Sam Saffron)
6월 1, 2026, 8:01오전
10
이것은 동일한 문제입니다 …
우리는 작은 액션을 억제하고 있으며, 우리의 구현은 아직 halfway(중간 단계)에 머물러 있습니다.
Discourse has a special post type that denotes “small action”.
It looks like this:
[image]
This happens when you close or open topics; it can happen when you assign topics and in various other conditions.
Over the years, we have heard many complaints from people who simply do not want to be notified about this administrivia. This is particularly noticeable when admins bulk close topics or can come as a surprise when topics are auto-closed due to timers.
We are partway through rolling out a…
따라서 이 토픽들은 토픽의 끝에 작은 액션(예: 클로저 등)이 있는 경우일 가능성이 매우 높습니다.
1개의 좋아요
RalfJung
(Ralf Jung)
6월 1, 2026, 8:13오전
11
아니요, 제가 버그 리포트에서 설명한 누락된 토픽들에는 실제로 새로운 게시글이 있습니다. 버그 리포트에서 말했듯이:
“읽지 않음” 표시는 제가 대화를 추적하는 방식인데, 이 버그 때문에 답글을 달아야 할 내용이 있다는 사실을 완전히 놓칠 위험이 큽니다.
“토픽 닫힘” 알림을 놓치는 것은 크게 신경 쓰지 않지만, 이 버그는 실제 게시글을 놓칠 수 있는 위험이 있습니다.
수요일(5월 27일)부터 iOS와 데스크톱 모두에서 이 문제를 겪고 있다는 점을 추가로 말씀드리고 싶습니다. OpenAI 커뮤니티 포럼의 사용자로서 이 문제를 경험하고 있습니다.
추가: 이 화면 녹화가 여기에서 매우 느리게 재생되는 것 같습니다. 죄송합니다.
3개의 좋아요
sam
(Sam Saffron)
6월 2, 2026, 2:21오전
13
죄송합니다. @zogstrip이 수정 작업을 진행 중이며, 오래 걸리지 않을 것입니다.
@RalfJung 잠시 기다려 주시겠어요? 수정이 완료된 후에도 문제가 해결되지 않으면 추가적으로 디버깅을 진행하겠습니다.
2개의 좋아요
걱정 마세요! OpenAI 커뮤니티에서도 동일한 문제를 보고 있어서 버그에 대한 가시성을 높이고 싶었을 뿐입니다. 이미 수정 작업이 진행 중이라는 소식에 다행입니다.
1개의 좋아요
sam
(Sam Saffron)
6월 3, 2026, 12:11오전
15
@zogstrip 님이 여기에서 이 문제를 일으킨 회귀 버그에 대한 수정을 적용했습니다:
committed 02:07PM - 02 Jun 26 UTC
The "Unread (N)" badge could count a topic that did not appear on the
/unread pa… ge (and, conversely, a genuinely unread topic could be hidden
from /unread). See https://meta.discourse.org/t/-/403986.
Both the count and the list bound their results by the user's "old
unread" cutoff, `user_stats.first_unread_at`, which is computed from
`topics.updated_at`. The count (TopicTrackingState) filters on
`topics.updated_at >= first_unread_at`, but since 17555ae8798 (#40127)
the /unread list (TopicQuery#apply_max_age_limit) filtered on
`topics.bumped_at` instead. A small action at the tail of a topic
(close, auto-close, category change, ...) moves `updated_at` but not
`bumped_at`, so such a topic passed the count's filter yet failed the
list's filter: it was counted but never listed.
#40127 switched to `bumped_at` for suggested topics, where bounding by
last visible activity is the desired behaviour, so reverting it is not
an option. Instead, `apply_max_age_limit` now takes an explicit
`age_column` that defaults to `updated_at` (keeping the unread and new
lists consistent with the count), and the suggested-topics callers pass
`age_column: :bumped_at` to preserve their behaviour.
OpenAI가 방금 배포되었습니다(2분 남음).
5개의 좋아요
오늘 아침부터 읽지 않은 목록에 OpenAI 직원이 닫은 21개의 게시물이 표시되고 있는데, 이미 그 게시물을 확인하거나 읽은 적이 있습니다.
수정: 이제 제 쪽에서는 문제가 해결된 것 같습니다🙌 감사합니다!
4개의 좋아요