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.
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.
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.)
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.
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.
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)
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.
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.
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.
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?
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.