Anzahl der Benachrichtigungen inkonsistent und falsch

Ich betreibe ein sehr kleines Forum, das eine Woche alt ist, und habe es gerade auf die aktuelle Version aktualisiert. Dennoch zeigt es dieses seltsame Verhalten. Die Benachrichtigungszahlen (Neu, etc.) scheinen nicht mit tatsächlichen Zahlen übereinzustimmen und ändern sich zufällig.

Derzeit sehe ich „Neu (3)".

Wenn ich auf „Neu

3 „Gefällt mir“

Kannst du bestätigen, welche Version von Discourse auf deiner Seite läuft? Diese sollte oben im Admin-Dashboard deiner Seite angezeigt werden.

3 „Gefällt mir“

2.5.0.beta4

( 74db317974 )

2 „Gefällt mir“

Hast du stummschaltbare Tags oder Kategorien?

Hast du einen konsistenten Reproduktionsschritt?

2 „Gefällt mir“

Nichts ist stummgeschaltet, und dies tritt auch bei neuen Aktivitäten im Forum weiterhin auf. Du kannst gerne ein Konto erstellen, wenn du es selbst ausprobieren möchtest. (Ich habe noch nicht bestätigt, ob andere Nutzer das Gleiche sehen oder ob es nur bei meinem Konto auftritt.)

Schauen Sie in Ihrem Admin-Bereich nach, ob es Warnungen gibt. Läuft Sidekiq?

1 „Gefällt mir“

Keine Warnungen, Sidekiq sieht gut aus. Ich gehe davon aus, dass ich das richtig lese.

Betreibst du Cloudflare oder ein ähnliches CDN? Ich habe bei Cloudflare eine gewisse Verzögerung bei Benachrichtigungen festgestellt, selbst wenn die Beschleunigung deaktiviert ist. Zum Beispiel Rocket Loader.

1 „Gefällt mir“

Oh, das habe ich übersehen… also ist etwas systematisch falsch. Das bedeutet, der Server teilt dem Client mit, dass es eine Reihe neuer Themen gibt, aber wenn man hineinschaut, fehlen sie.

Ich habe das schon einmal bei geplanten Beiträgen gesehen… nutzt du diese? Die Fehlersuche ist etwas knifflig, wir müssen die Liste der topic_ids erhalten, die der Client als neu ansieht.

Wenn dies gerade passiert, führe Folgendes aus:

SELECT 
           u.id AS user_id,
           topics.id AS topic_id,
           topics.created_at,
           highest_staff_post_number highest_post_number,
           last_read_post_number,
           c.id AS category_id,
           tu.notification_level
FROM topics
JOIN users u on u.id = 1
JOIN user_stats AS us ON us.user_id = u.id
JOIN user_options AS uo ON uo.user_id = u.id
JOIN categories c ON c.id = topics.category_id
LEFT JOIN topic_users tu ON tu.topic_id = topics.id AND tu.user_id = u.id
LEFT JOIN category_users ON category_users.category_id = topics.category_id AND category_users.user_id = 1
WHERE u.id = 1 AND
      
      topics.archetype <> 'private_message' AND
      ((1=0) OR ("topics"."deleted_at" IS NULL AND topics.created_at >= GREATEST(CASE
                  WHEN COALESCE(uo.new_topic_duration_minutes, 2880) = -1 THEN u.created_at
                  WHEN COALESCE(uo.new_topic_duration_minutes, 2880) = -2 THEN COALESCE(u.previous_visit_at,u.created_at)
                  ELSE ('2020-05-13 00:36:29.100619'::timestamp - INTERVAL '1 MINUTE' * COALESCE(uo.new_topic_duration_minutes, 2880))
               END, us.new_since, '2020-05-07 14:46:17') AND tu.last_read_post_number IS NULL AND COALESCE(tu.notification_level, 2) >= 2 AND topics.created_at > '2020-05-07 14:46:17' AND (category_users.last_seen_at IS NULL OR topics.created_at > category_users.last_seen_at))) AND
      
      
      topics.deleted_at IS NULL AND
      
      NOT (
        last_read_post_number IS NULL AND
        COALESCE(category_users.notification_level, 1) = 0
      )

UNION ALL

SELECT 
           u.id AS user_id,
           topics.id AS topic_id,
           topics.created_at,
           highest_staff_post_number highest_post_number,
           last_read_post_number,
           c.id AS category_id,
           tu.notification_level
FROM topics
JOIN users u on u.id = 1
JOIN user_stats AS us ON us.user_id = u.id
JOIN user_options AS uo ON uo.user_id = u.id
JOIN categories c ON c.id = topics.category_id
LEFT JOIN topic_users tu ON tu.topic_id = topics.id AND tu.user_id = u.id
LEFT JOIN category_users ON category_users.category_id = topics.category_id AND category_users.user_id = 1
WHERE u.id = 1 AND
       topics.updated_at >= us.first_unread_at AND 
      topics.archetype <> 'private_message' AND
      (("topics"."deleted_at" IS NULL AND tu.last_read_post_number < topics.highest_staff_post_number AND COALESCE(tu.notification_level, 1) >= 2) OR (1=0)) AND
      
      
      topics.deleted_at IS NULL AND
      
      NOT (
        last_read_post_number IS NULL AND
        COALESCE(category_users.notification_level, 1) = 0
      )

Ersetze user_id = 1 durch deine Benutzer-ID (du kannst sie finden, indem du select id, username from users where username = 'deinname' ausführst).

Wenn dies passiert, kannst du Data Explorer installieren und prüfen, was los ist.

1 „Gefällt mir“

Kein CDN, keine geplanten Beiträge, das ist eine ganz normale Discourse-Installation in Docker auf einem Linode VPS, nichts Besonderes.

Ich habe gerade das Data Explorer-Plugin installiert, und jetzt lädt nicht einmal mehr die Einstellungsseite. Sie stürzt mit einem JS-Fehler in der Konsole ab:

workbox-strategies.prod.js:1 Uncaught (in promise) no-response: no-response :: [{"url":"https://forum.livevideotech.today/admin/site_settings"}]
    at a.makeRequest (https://forum.livevideotech.today/javascripts/workbox/workbox-strategies.prod.js:1:2145)
1 „Gefällt mir“

Gibt es benutzerdefinierte Plugins? Befindest du dich auf dem Beta-Branch oder tests-passed? Wenn du auf Beta bist, bitte für den Moment auf tests-passed wechseln.

Ein Plugin: GitHub - discourse/discourse-solved: Allow accepted answers on topics · GitHub

Ich nutze Version 2.5.0.beta4, zu der ich nach einer Standard-Installation und der Ausführung der angezeigten Updates gelangt bin.

Ich weiß nicht, wie man zu einem bestimmten Branch wechselt. Außerdem klingt das riskant, da einer der wenigen Suchergebnisse, wenn man danach sucht, eine Person war, die bei einem solchen Versuch fehlerhafte Datenbank-Migrationen hatte.

Ich habe über die Befehlszeile eine Verbindung zur Datenbank hergestellt und die Abfrage ausgeführt. Es wurden keine Ergebnisse zurückgegeben:

discourse(#         last_read_post_number IS NULL AND
discourse(#         COALESCE(category_users.notification_level, 1) = 0
discourse(#       );
 user_id | topic_id | created_at | highest_post_number | last_read_post_number | category_id | notification_level
---------+----------+------------+---------------------+-----------------------+-------------+--------------------
(0 rows)

discourse=#

Zur Klarstellung: Im aktuellen Zustand sehe ich beim Laden der Startseite „Neu (1)“. Wenn ich auf „Neu (1)“ klicke, werden keine neuen Beiträge angezeigt. Wenn ich zurück zur Startseite gehe, verschwindet „Neu (1)“. Beim Neuladen der Seite erscheint es erneut.

Du führst einen alten Commit aus und befindest dich nicht auf der Beta-Version.

Kannst du neu aus der Konsole erstellen? Der Daten-Explorer sollte funktionieren.

Es wird angezeigt, dass ich mich auf 4078b22887 befinde, was genau ein Commit hinter master liegt.

Ah, richtig, entschuldige. Kannst du bitte bestätigen, dass der Daten-Explorer nach dem Aktivieren in den Site-Einstellungen weiterhin nicht funktioniert? Außerdem: Könntest du es in einem anderen Browser (Firefox/Chrome) versuchen? Bleibt der Fehler im Arbeitsfeld bestehen?

Ich werde mich später um das Problem mit dem Datenexplorer kümmern. Ich möchte das Forum nicht ständig neu aufbauen und jedes Mal herunterfahren. Ich führe die Abfragen einfach über die Kommandozeile aus.

Aktueller Status: „Neu (4)"

 user_id | topic_id |         created_at         | highest_post_number | last_read_post_number | category_id | notification_level
---------+----------+----------------------------+---------------------+-----------------------+-------------+--------------------
       1 |      116 | 2020-05-13 06:48:33.784078 |                   1 |                       |           5 |
       1 |      118 | 2020-05-13 07:29:47.423296 |                   1 |                       |           5 |
       1 |      117 | 2020-05-13 06:52:39.448473 |                   1 |                       |          13 |
       1 |       31 | 2020-05-03 14:13:53.109324 |                   4 |                     3 |           7 |                  2

Beim Klicken auf „Neu (4)

4 „Gefällt mir“

Ok, das ist interessant. Könntest du bitte zum Thema 31 navigieren? Ist dort etwas Auffälliges? Das ist ein ungelesenes Thema (last_read_post_number ist 3) … die Abfrage zeigt an, dass wir denken, du hast 3 neue und 1 ungelesene Beiträge.

Ich vermute weiterhin, dass auf deiner Seite etwas mit dem Caching von Web Workers im Client passiert.

Bist du mit Chrome oder Firefox unterwegs? Könntest du den anderen Browser ausprobieren? Oder versuche es einmal mit deinem Browser im Inkognito-Modus ohne Erweiterungen?

4 „Gefällt mir“

Oh @martin und ich haben gerade einen Fehler entdeckt … Muten Sie zufällig irgendwelche Tags?

Es gibt einen Fehler, bei dem die Zähler falsch werden, wenn Sie Tags stummgeschaltet haben und ANY Themen gibt, die zu 100% ohne Tags sind. Diese werden dann in „Ungelesen“ nicht angezeigt.

3 „Gefällt mir“

Ich bin mir nicht zu 100 % sicher, ob dies genau dein Problem ist, @aaronpk … aber diese Korrektur ist jetzt enthalten:

6 „Gefällt mir“