I conteggi delle notifiche sono inconsistenti e errati

Sto gestendo un forum molto piccolo da una settimana, appena aggiornato all’ultima versione, e continuo a osservare questo comportamento molto strano. I contatori delle notifiche (Nuovi, ecc.) non sembrano corrispondere a nessun conteggio reale e cambiano in modo casuale.

Attualmente vedo “Nuovi (3)”

Cliccando su “Nuovi” non vedo nuovi post e il “(3)” scompare.

Tornando alla home page, non vedo più “Nuovi (3)” nel menu.

Se ricarico la pagina, “Nuovi (3)” ricompare.

Cliccando su “Ultime” vedo “Non letti (2)”, tuttavia nessuno dei messaggi nell’elenco mostra un indicatore di non lettura.

Cliccando su “Non letti (2)” mi viene mostrato che non ci sono messaggi non letti.

A volte, quando clicco su “Nuovi”, non vedo nuovi messaggi e appare un indicatore “Non letti (1)”

Ho controllato /sidekiq/ e tutto sembra funzionare correttamente; non ci sono lavori in coda o bloccati.

3 Mi Piace

Puoi confermare su quale versione di Discourse si trova il tuo sito? Dovrebbe essere indicata nella parte superiore della dashboard di amministrazione del tuo sito.

3 Mi Piace

2.5.0.beta4

(74db317974)

2 Mi Piace

Hai tag o categorie silenziati?

Hai una procedura di riproduzione coerente?

2 Mi Piace

Niente è stato silenziato e questo problema continua a verificarsi anche con nuove attività nel forum. Sentiti libero di creare un account se vuoi vederlo in prima persona. (Non ho effettivamente confermato se altre persone vedono questo problema o se è unico del mio account.)

Controlla la sezione di amministrazione: ci sono avvisi? Sidekiq è in esecuzione?

1 Mi Piace

Nessun avviso, Sidekiq sembra funzionare correttamente. Presumo di aver interpretato correttamente questo.

Stai utilizzando Cloudflare o una CDN simile? Ho notato una certa latenza nelle notifiche con Cloudflare, anche con l’accelerazione disattivata. Ad esempio, Rocket Loader.

1 Mi Piace

Ah, mi era sfuggito… quindi c’è qualcosa che non va in modo costante. Questo significa che il server sta comunicando al client che ci sono molti nuovi argomenti, ma quando li apri, risultano mancanti.

Ho visto questo comportamento in passato con i post programmati… li utilizzi anche tu? Il debug è un po’ complicato: dobbiamo ottenere l’elenco degli ID degli argomenti che il client ritiene nuovi.

Se il problema si sta verificando ora, esegui:

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
      )

sostituendo user_id = 1 con il tuo ID utente (puoi trovarlo eseguendo select id, username from users where username = 'iltuonomeutente')

Se il problema si verifica, puoi installare Data Explorer e verificare cosa sta succedendo.

1 Mi Piace

Nessuna CDN, nessun post programmato: si tratta di un’installazione standard di Discourse in Docker su un VPS Linode, assolutamente nulla di complicato.

Ho appena installato il plugin Data Explorer e ora non riesco nemmeno a caricare la pagina delle impostazioni. Si blocca con un errore JS nella console:

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 Mi Piace

Ci sono plugin personalizzati? Sei sulla branch beta o su tests-passed? Se sei su beta, puoi passare a tests-passed per ora.

Un plugin: GitHub - discourse/discourse-solved: Allow accepted answers on topics · GitHub

Sono alla versione 2.5.0.beta4, alla quale sono arrivato dopo un’installazione standard e l’esecuzione degli aggiornamenti suggeriti.

Non so come passare a un ramo specifico; inoltre, sembra rischioso, dato che uno dei pochi risultati di ricerca quando ho cercato come farlo era di qualcuno che aveva subito migrazioni del database fallite mentre cercava di farlo.

Mi sono connesso al database da riga di comando ed eseguito la query, ma non ci sono stati risultati:

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=#

Per chiarire, allo stato attuale, quando carico la home page vedo “Nuovi (1)”, cliccando su “Nuovi (1)” non vedo nessun nuovo post. Tornando alla home page, “Nuovi (1)” scompare. Ricaricando la pagina, riappare.

Stai eseguendo una vecchia versione e non sei sulla beta

Puoi ricostruire dalla console. L’esploratore dati dovrebbe funzionare

Dice che sono su 4078b22887, che è esattamente un commit indietro rispetto a master.

Ah, giusto, scusa. Puoi confermare che l’esploratore di dati sia ancora rotto dopo averlo abilitato nelle impostazioni del sito? Inoltre, puoi provare su un browser diverso (Firefox/Chrome): l’errore della casella di lavoro persiste?

Gestirò il problema dell’esploratore di dati più tardi; non voglio dover ricostruire continuamente il forum e metterlo offline ogni volta. Eseguirò semplicemente le query da riga di comando.

Stato attuale: “Nuovi (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

Cliccando su “Nuovi (4)” vedo tre post: 118, 117, 116. Quel topic_id 31 non appare.

Tornando alla home page, viene mostrato “Nuovi (3)”.

I risultati della query restituiscono comunque gli stessi 4 elementi.

4 Mi Piace

Ok, questa cosa è interessante: puoi andare al topic 31? C’è qualcosa di strano? È un topic non letto (l’ultimo post letto è il numero 3)… la query indica che pensiamo tu abbia 3 nuovi e 1 non letto.

Continuo a pensare che forse c’è qualcosa che non va sul lato client da parte tua, legato alla cache dei web worker.

Usi Chrome o Firefox… puoi provare l’altro… puoi provare il tuo browser in modalità incognito senza estensioni?

4 Mi Piace

Oh @martin e io abbiamo appena scoperto un bug… Per caso stai silenziando dei tag?

C’è un bug per cui i conteggi vanno fuori se hai dei tag silenziati e QUALSIASI argomento senza tag: alla fine questi ultimi mancano dalla lista dei non letti.

3 Mi Piace

Non sono sicuro al 100% che questo sia esattamente il tuo problema @aaronpk… ma questa correzione è ora disponibile qui:

6 Mi Piace