안녕하세요,
지난 1~2주 전 업그레이드 이후 대시보드의 새 게시물 통계가 정상적으로 작동하지 않고 있습니다. 더 이상 아무것도 표시되지 않습니다. 저만의 문제인지, 아니면 일반적인 버그인지 궁금합니다. 이곳에서 검색을 해봐도 관련 정보를 찾지 못했습니다.
감사합니다
안녕하세요,
지난 1~2주 전 업그레이드 이후 대시보드의 새 게시물 통계가 정상적으로 작동하지 않고 있습니다. 더 이상 아무것도 표시되지 않습니다. 저만의 문제인지, 아니면 일반적인 버그인지 궁금합니다. 이곳에서 검색을 해봐도 관련 정보를 찾지 못했습니다.
감사합니다
죄송합니다, 설명을 좀 더 자세히 해 주실 수 있을까요? 이 그래프들이 작동하지 않는다는 말씀이신가요?
마지막으로 인스턴스를 업데이트한 시점은 언제이며, 지금 바로 업데이트할 수 있을까요?
불분명하게 말씀드려서 죄송합니다. 스크린샷을 첨부합니다:
오늘 저녁에 05685d430f로 업데이트했습니다.
기억이 맞다면, 대략 1~2주 전부터 현재까지는 5일마다 업그레이드하고 있습니다.
그리고 네, 지금은 트래픽이 많지는 않지만 새 게시글은 올라오고 있습니다.
오늘부터 현재까지의 연도를 선택해서 클릭해 보기도 했는데, 역시 아무것도 없습니다.
가장 먼저 떠오르는 것은 "데이터가 부족하다"이지만, 디버깅을 도와줄 수 있는 스태프 XP 팀에게 이 문제를 언급해 보겠습니다.
https://YOURSITE.COM/admin/reports/posts?end_date=2025-02-17&start_date=2025-01-17의 전체 보고서 페이지로 이동하여 날짜/필터를 조정하면 데이터를 확인할 수 있습니까? 이 페이지나 대시보드를 로드할 때 https://YOURSITE.COM/logs의 로그나 Chrome DevTools의 네트워크 탭에서 오류가 표시됩니까?
아니요, 거기도 모두 비어 있습니다. 시작 날짜와 종료 날짜도 조정할 수 있지만, 변경은 되지 않습니다.
아니요, 없습니다. 통계와 관련 없는(시간 기준) 몇 가지 비추천(deprecation) 공지사항만 있습니다.
사실, 오류가 있습니다. 페이지를 로드할 때 9개가 있고, 시간이 지남에 따라 더 늘고 있습니다.
이것으로 도움이 될까요? 이 오류 중 하나/모두를 복사해서 붙여넣기(텍스트)할까요?
실제로 저도 이런 상황을 겪었습니다. 제 커뮤니티에서도 올바른 게시물 수가 표시되지 않습니다.
여기처럼 올바르게 표시되지 않나요, 아니면 아예 표시되지 않나요?
조사를 해보니 domQueryService 오류는 Bitwarden Chrome 확장 프로그램에서 발생하는 것 같고, 이로 인해 문제가 생길 가능성은 낮습니다. mini-profiler 오류는 무시해도 됩니다.
fingerprint-report 오류는 GitHub - discourse/discourse-fingerprint: A plugin that computes user fingerprints to help administrators combat internet trolls. · GitHub 에서 발생하며, 수정이 필요한 문제이지만 제 로컬 환경에서는 Posts 리포트 로딩을 방해하지 않는 것으로 보입니다.
다른 사용자들도 Discourse에서 간혹 문제를 겪는 body_tag_1.js 파일에 대해 말씀드리자면, 관련 링크는 다음과 같습니다: https://community.home-assistant.io/t/lost-ability-to-scroll-through-ha-community-site/659707 . 광고 차단기를 사용 중이신가요? 사용 중이시라면 비활성화해 보시기 바랍니다. 그렇지 않거나 그래도 문제가 해결되지 않으면, 테마 또는 플러그인 문제일 수 있으므로 안전 모드(Safe Mode)를 활성화해 보세요: Using Safe Mode to troubleshoot issues with themes and plugins . 안전 모드에서 페이지가 정상적으로 로드되면 플러그인이나 테마에 문제가 있다는 의미입니다.
마지막으로, 리포트의 JSON을 로드해 보시고 결과가 표시되는지 확인해 주세요:
저는 현재 사용 중인 브라우저인 Opera에 내장되어 있는 아드블로커를 사용하고 있습니다. 또한 Pi-hole을 여러 개의 차단 목록과 함께 사용하고 있습니다.
하지만: 이러한 문제는 제 iPad의 Discourse 앱과 모바일 데이터 포함 다른 네트워크에서도 발생합니다. 따라서 아드블로커나 유사한 도구는 사용하지 않고 있습니다.
가능합니다. 하지만 오늘은 더 이상 안 됩니다. ![]()
물론입니다:
{"reports":[{"type":"posts","title":"Beiträge","xaxis":"Tag","yaxis":"Anzahl neuer Beiträge","description":"Neue Beiträge, die in dieser Zeit erstellt wurden","description_link":null,"data":[],"start_date":"2025-01-18T00:00:00Z","end_date":"2025-02-18T23:59:59Z","prev_data":null,"prev_start_date":"2024-12-17T00:00:00Z","prev_end_date":"2025-01-18T00:00:00Z","prev30Days":null,"dates_filtering":true,"report_key":"reports:posts:20250118:20250218:[:prev_period]:50:4","primary_color":"rgba(113,184,254,1)","secondary_color":"rgba(113,184,254,0.1)","available_filters":[{"id":"category","type":"category","default":null}],"labels":[{"type":"date","property":"x","title":"Tag"},{"type":"number","property":"y","title":"Anzahl"}],"average":false,"percent":false,"higher_is_better":true,"modes":["chart","table"],"prev_period":0,"limit":50}]}
이것은 아무것도 표시하지 않는 것 같으니, 제가 제대로 이해했다면 안전 모드를 시도하는 것이 의미가 있을까요?
네, 감사합니다. 도움이 되었고, 프론트엔드에 오류가 있는 것이 아니라 데이터 자체가 없다는 점을 알려주셨네요 ![]()
이 리포트를 뒷받침하는 SQL 쿼리는 비교적 간단합니다. Data Explorer나 데이터베이스에 직접 접근할 수 있다면 이 쿼리를 실행하고 조정해 보신 후 데이터가 반환되는지 확인해 보실 수 있습니다:
SELECT
COUNT(*) AS "count_all",
date(posts.created_at) AS "date_posts_created_at"
FROM
"posts"
INNER JOIN "topics" ON "topics"."deleted_at" IS NULL
AND "topics"."id" = "posts"."topic_id"
WHERE
"posts"."deleted_at" IS NULL
AND (
topics.archetype <> 'private_message'
)
AND (
posts.created_at >= '2025-02-01'
AND posts.created_at <= '2025-02-28'
)
AND "posts"."post_type" = 1
GROUP BY
date(posts.created_at)
ORDER BY
date(posts.created_at)
그리고 리포트 코드 자체는 다음과 같습니다:
불행히도 사용자의 사이트에 접근 권한이 없어 데이터베이스를 직접 살펴볼 수 없기 때문에, 더 깊이 디버깅하는 것은 다소 어렵습니다.
Data Explorer의 쿼리는 데이터를 반환합니다:
Roi, 죄송합니다. 이 부분이 좀 놓쳐진 것 같습니다. 리포트 코드 자체에 문제가 있는 것 같네요. discourse/app/models/concerns/reports/posts.rb at 8596aa34c46071eb42ffbb9e19ad733d1765578e · discourse/discourse · GitHub
사이트의 rails 콘솔에 접근할 수 있나요?如果可以하면 다음 코드를 실행해 보시고 데이터가 출력되는지 확인해 주세요:
Report.find("posts", start_date: 4.weeks.ago, end_date: Time.zone.now).data
이 명령은 실행되는 SQL 쿼리도 함께 출력하므로, 거기서 추가적인 단서를 얻을 수 있을지도 모릅니다.
괜찮습니다! 관리자 대시보드에서 완벽해 보이지는 않지만, 다른 버그들만큼 결정적인 문제는 아닙니다.
네.
음, 제가 올바르게 한 건가요?
root@prometheus-discourse-sidemount:/var/www/discourse# rails c
Plugin name is 'discourse-docs', but plugin directory is named 'discourse-knowledge-explorer'
Plugin name is 'discourse-user-notes', but plugin directory is named 'discourse-staff-notes'
[1] pry(main)> Report.find("posts", start_date: 4.weeks.ago, end_date: Time.zone.now).data
=> []
[2] pry(main)>
답변이 비어 있습니다. 이는 관리자 대시보드에서 빈 상자가 표시되는 이유를 설명해 줍니다. 하지만 SQL 문도 답변에 포함되어야 한다고 하셨는데요?
아, 죄송합니다. 로컬에서 실행하고 있어서 제가 그렇게 본 것일 수도 있겠네요. 이걸 시도해 보세요:
MethodProfiler.output_sql_to_stderr!
Report.find("posts", start_date: 4.weeks.ago, end_date: Time.zone.now).data
이제 쿼리 노이즈가 훨씬 많이 표시되겠지만, 마지막 몇 개의 쿼리가 바로 보고서에서 실행되는 쿼리입니다:
음, 훨씬 더 많은 노이즈가 있네요.
이것이 찾으시는 내용인가요, 아니면 위에서 더 필요한 것이 있나요?
debugsql (sql): SELECT COUNT(*) AS "count_all", date(posts.created_at) AS "date_posts_created_at" FROM "posts" INNER JOIN "topics" ON "topics"."deleted_at" IS NULL AND "topics"."id" = "posts"."topic_id" WHERE "posts"."deleted_at" IS NULL AND (topics.archetype <> 'private_message') AND NOT ((topics.category_id IN (NULL))) AND (posts.created_at >= '2025-02-03 06:00:45.160432' AND posts.created_at <= '2025-03-03 06:00:45.160586') AND "posts"."post_type" = 1 GROUP BY date(posts.created_at) ORDER BY date(posts.created_at)
debugsql (sec): 0.001
debugsql (sql): SELECT "category_custom_fields"."category_id" FROM "category_custom_fields" WHERE "category_custom_fields"."name" = 'private_topics_enabled'
debugsql (sec): 0.0
debugsql (sql): SELECT COUNT(*) FROM "posts" INNER JOIN "topics" ON "topics"."deleted_at" IS NULL AND "topics"."id" = "posts"."topic_id" WHERE "posts"."deleted_at" IS NULL AND (topics.archetype <> 'private_message') AND NOT ((topics.category_id IN (NULL))) AND "posts"."post_type" = 1
debugsql (sec): 0.0
debugsql (sql): SELECT COUNT(*) FROM "posts" INNER JOIN "topics" ON "topics"."deleted_at" IS NULL AND "topics"."id" = "posts"."topic_id" WHERE "posts"."deleted_at" IS NULL AND (topics.archetype <> 'private_message') AND NOT ((topics.category_id IN (NULL))) AND "posts"."post_type" = 1 AND (posts.created_at >= '2025-01-04 06:00:45.160432' and posts.created_at < '2025-02-03 06:00:45.160432')
debugsql (sec): 0.0
debugsql (sql): COMMIT
debugsql (sec): 0.0
=> []
네, 제가 필요한 게 바로 그거예요
눈에 띄는 부분은 AND NOT ((topics.category_id IN (NULL)))인데, 제가 위에 스크린샷으로 보여드린 쿼리에는 그런 게 없습니다. 이 조건은 카테고리가 없는 모든 토픽을 집계에서 제외하게 되는데, 포럼 설정에 따라 해당 토픽이 꽤 많을 수도 있겠죠?
코드에서 이 조건이 어디서 오는지 찾지 못하겠습니다. 다음 단계로 Data Explorer에서 아래처럼 실행해 보세요:
SELECT
COUNT(*) AS "count_all",
date(posts.created_at) AS "date_posts_created_at"
FROM
"posts"
INNER JOIN "topics" ON "topics"."deleted_at" IS NULL
AND "topics"."id" = "posts"."topic_id"
WHERE
"posts"."deleted_at" IS NULL
AND (
topics.archetype <> 'private_message'
)
AND (
posts.created_at >= '2025-02-03 06:00:45.160432'
AND posts.created_at <= '2025-03-03 06:00:45.160586'
)
AND "posts"."post_type" = 1
GROUP BY
date(posts.created_at)
ORDER BY
date(posts.created_at)
(여기서는 AND NOT 절을 제거했습니다) 그리고 결과가 나오는지 확인해 보세요. 제가 로컬에서 이 쿼리를 실행하면 다음과 같은 결과가 나옵니다:
count_all | date_posts_created_at
-----------+-----------------------
1 | 2025-02-03
8 | 2025-02-04
7 | 2025-02-05
1 | 2025-02-06
7 | 2025-02-12
4 | 2025-02-26
반면에 category_id 절을 유지한 채로 쿼리를 실행하면 데이터가 전혀 나오지 않습니다.
네, 저도 정말 확실하지 않습니다
가능성은 낮지만, 플러그인이 무언가를 추가하거나 수정하고 있는 건 아닐까요?
어떤 플러그인을 사용 중이신가요? 위 첫 번째 쿼리(count_all이 포함된 것)는 여기서 나옵니다:
콘솔에서 이것만 호출해도 여전히 category_id IN (NULL) 절이 추가된다면, 뭔가 아주 이상한 일이 일어나고 있는 것입니다:
Post.public_posts_count_per_day(4.weeks.ago, Time.zone.now)