Errore interno del server 500 durante l'approvazione del post in coda

Si vede 500 Internal Server Error su 2.9.0.beta4

Il log degli errori dice:

RuntimeError (È necessaria una connessione al gateway per chiamare questo metodo! Dovrai farlo all'interno di qualsiasi evento (ad es. `ready`) o dopo `bot.run :async`.)
lib/post_creator.rb:611:in `update_user_counts'
lib/post_creator.rb:215:in `block in create'
lib/post_creator.rb:409:in `block (2 levels) in transaction'
lib/post_creator.rb:408:in `block in transaction'
lib/distributed_mutex.rb:33:in `block in synchronize'
lib/distributed_mutex.rb:29:in `synchronize'
lib/distributed_mutex.rb:29:in `synchronize'
lib/distributed_mutex.rb:14:in `synchronize'
lib/post_creator.rb:407:in `transaction'
lib/post_creator.rb:205:in `create'
app/models/reviewable_queued_post.rb:77:in `perform_approve_post'
app/models/reviewable.rb:357:in `public_send'
app/models/reviewable.rb:357:in `block in perform'
app/models/reviewable.rb:355:in `perform'
app/controllers/reviewables_controller.rb:200:in `perform'
app/controllers/application_controller.rb:404:in `block in with_resolved_locale'
app/controllers/application_controller.rb:404:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:368:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:202:in `call'

Backtrace

discordrb (3.3.0) lib/discordrb/bot.rb:673:in `gateway_check'
discordrb (3.3.0) lib/discordrb/bot.rb:156:in `servers'
plugins/discourse-discord-sync/lib/utils.rb:72:in `sync_user'
plugins/discourse-discord-sync/plugin.rb:42:in `block (3 levels) in activate!'
activesupport (6.1.4.7) lib/active_support/callbacks.rb:427:in `instance_exec'
activesupport (6.1.4.7) lib/active_support/callbacks.rb:427:in `block in make_lambda'
activesupport (6.1.4.7) lib/active_support/callbacks.rb:235:in `block in halting_and_conditional'
activesupport (6.1.4.7) lib/active_support/callbacks.rb:516:in `block in invoke_after'
activesupport (6.1.4.7) lib/active_support/callbacks.rb:516:in `each'
activesupport (6.1.4.7) lib/active_support/callbacks.rb:516:in `invoke_after'

Env

HTTP HOSTS: rimosso da me

Quindi si blocca perché c’è un server Discord con cui ti stai sincronizzando che non è raggiungibile e il plugin non lo gestisce in modo appropriato.

Guardando il codice del plugin, vedo che non lo esegue nemmeno come processo asincrono, ovvero il salvataggio non viene completato prima che Discourse raggiunga i server Discord. Se questo fosse implementato come processo asincrono, potrebbe anche riprovare automaticamente nel caso in cui il server Discord fallisca. @barreeeiroo

2 Mi Piace