대기 중인 게시물을 승인할 때 500 내부 서버 오류 발생

2.9.0.beta4에서 500 Internal Server Error가 발생합니다

에러 로그는 다음과 같습니다:

RuntimeError (A gateway connection is necessary to call this method! You'll have to do it inside any event (e.g. `ready`) or after `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: removed by me

즉, 동기화하려는 Discord 서버에 연결할 수 없고, 플러그인이 이를 적절하게 처리하지 못하기 때문에 오류가 발생하는 것입니다.

플러그인 코드를 살펴본 결과, 이 작업이 비동기(async)로 수행되지 않는다는 것을 알 수 있습니다. 즉, Discourse가 Discord 서버에 도달하기 전에 저장 작업이 완료되지 않습니다. 이 부분을 비동기 작업으로 구현하면, Discord 서버에 오류가 발생했을 때 자동으로 재시도할 수도 있습니다. @barreeeiroo