Ho molti errori di "Failed to backfill 'Reader' badge"

Abbiamo molti di questi errori nel log. C’è qualcosa che possiamo/dovremmo fare?

Info:

Job exception: Failed to backfill ‘Reader’ badge: {:revoked_callback=>#<Proc:0x00007867ef8d9620 /var/www/discourse/app/jobs/regular/backfill_badge.rb:20 (lambda)>, :granted_callback=>#<Proc:0x00007867ef8d95f8 /var/www/discourse/app/jobs/regular/backfill_badge.rb:21 (lambda)>}. Reason: ERROR: canceling statement due to statement timeout

Trace:

/var/www/discourse/app/services/badge_granter.rb:505:in `rescue in backfill'
/var/www/discourse/app/services/badge_granter.rb:385:in `backfill'
/var/www/discourse/app/jobs/regular/backfill_badge.rb:18:in `execute'
/var/www/discourse/app/jobs/base.rb:316:in `block (2 levels) in perform'
rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:303:in `block in perform'
/var/www/discourse/app/jobs/base.rb:299:in `each'
/var/www/discourse/app/jobs/base.rb:299:in `perform'
sidekiq-7.3.9/lib/sidekiq/processor.rb:220:in `execute_job'
sidekiq-7.3.9/lib/sidekiq/processor.rb:185:in `block (4 levels) in process'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:180:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/var/www/discourse/lib/sidekiq/discourse_event.rb:6:in `call'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/var/www/discourse/lib/sidekiq/pausable.rb:131:in `call'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
sidekiq-7.3.9/lib/sidekiq/job/interrupt_handler.rb:9:in `call'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:26:in `track'
sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:134:in `call'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:173:in `invoke'
sidekiq-7.3.9/lib/sidekiq/processor.rb:184:in `block (3 levels) in process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:145:in `block (6 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_retry.rb:118:in `local'
sidekiq-7.3.9/lib/sidekiq/processor.rb:144:in `block (5 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/config.rb:39:in `block in <class:Config>'
sidekiq-7.3.9/lib/sidekiq/processor.rb:139:in `block (4 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/processor.rb:281:in `stats'
sidekiq-7.3.9/lib/sidekiq/processor.rb:134:in `block (3 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_logger.rb:15:in `call'
sidekiq-7.3.9/lib/sidekiq/processor.rb:133:in `block (2 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_retry.rb:85:in `global'
sidekiq-7.3.9/lib/sidekiq/processor.rb:132:in `block in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_logger.rb:40:in `prepare'
sidekiq-7.3.9/lib/sidekiq/processor.rb:131:in `dispatch'
sidekiq-7.3.9/lib/sidekiq/processor.rb:183:in `block (2 levels) in process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `handle_interrupt'
sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `block in process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `handle_interrupt'
sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:86:in `process_one'
sidekiq-7.3.9/lib/sidekiq/processor.rb:76:in `run'
sidekiq-7.3.9/lib/sidekiq/component.rb:10:in `watchdog'
sidekiq-7.3.9/lib/sidekiq/component.rb:19:in `block in safe_thread'
1 Mi Piace

Potrebbe essere un problema con un argomento particolarmente grande? Avete dei megatopic che potrebbero essergli di peso?

Se il processo di assegnazione dei badge viene bloccato interamente a causa di ciò, potrebbe essere un’idea disabilitare temporaneamente il badge Reader e vedere se questo aiuta.


Ho trovato questo su quello che sembra essere un problema simile: (anche se piuttosto vecchio)

Quindi potrebbe essere che la query sia eccessiva per le vostre specifiche?

1 Mi Piace

Non abbiamo un megatema. Almeno non ne sono a conoscenza. Se c’è un comando SQL che posso eseguire per verificare, sarebbe ottimo.
Abbiamo 32 core CPU + 128 GB di RAM.. Non sono sicuro se questo sia un limite. Se c’è qualcosa che devo modificare nel database, per favore fatemelo sapere.

2 Mi Piace

Penso che se ne avessi uno lo sapresti, ma puoi trasformare la tua lista /latest in ordine di attività per ricontrollare usando il titolo della colonna o usando YourSite/latest?order=posts.

Ma qualcosa del genere nell’esploratore di dati dovrebbe anche mostrarti i primi 10:

SELECT id AS topic_id
FROM topics 
ORDER BY posts_count DESC
LIMIT 10

L’SQL per il badge Reader è qui:

Il badge Reader non è necessariamente uno dei più entusiasmanti, quindi se puoi convivere con la disabilitazione e questo risolve tutto, potrebbe essere la via più semplice. Ma se vuoi esplorarlo ulteriormente, penso che potresti voler guardare la tua tabella post_timings per vedere quanto è diventata grande.

2 Mi Piace

Ho visto un paio di mega argomenti. Ma abbiamo limitato a 10.000 risposte e lo dividiamo.

Lo disattiverò per ora. Ma ecco il rake db:stats

table_name                                       | row_estimate | table_size | index_size | total_size
-----------------------------------------------------------------------------------------------
post_timings                                     | 1707169280   | 70 GB      | 61 GB      | 132 GB
topic_views                                      | 243936880    | 11 GB      | 15 GB      | 26 GB
user_auth_token_logs                             | 98783264     | 23 GB      | 2775 MB    | 25 GB
2 Mi Piace

Sembra proprio un bel problema. :slight_smile:

Non si sa mai, nel caso non l’avessi fatto al momento (a seconda di quanto è vecchio il tuo forum), c’era questo consiglio dato qui: PostgreSQL 13 update

Purtroppo non ho esperienza diretta in merito, quindi potremmo dover aspettare che arrivi qualcuno di più esperto per un’analisi più approfondita. :nerd_face:

1 Mi Piace

Sì. Ho fatto questo quando sono passato a PostgreSQL 13. L’ho eseguito anche ieri. Ma la dimensione del database non è cambiata.

Spero che qualcun altro possa intervenire su come ridurre la dimensione.

Grazie comunque!

2 Mi Piace