Translator service result error handling

Looking through the logs of a small-to-mid-size active forum using the translator plugin, I’m seeing intermittent server-side exceptions at the point the translator attempts to parse the JSON result from the translator service (Google in this case): discourse-translator/google.rb at master · discourse/discourse-translator · GitHub

Strack trace

Summary

/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/json-2.2.0/lib/json/common.rb:156:in parse' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/json-2.2.0/lib/json/common.rb:156:inparse’
/var/www/discourse/plugins/discourse-translator/services/discourse_translator/google.rb:83:in result' /var/www/discourse/plugins/discourse-translator/services/discourse_translator/google.rb:52:indetect’
/var/www/discourse/plugins/discourse-translator/plugin.rb:106:in block in execute' /var/www/discourse/lib/distributed_mutex.rb:40:insynchronize’
/var/www/discourse/lib/distributed_mutex.rb:10:in synchronize' /var/www/discourse/plugins/discourse-translator/plugin.rb:105:inexecute’
/var/www/discourse/app/jobs/base.rb:230:in block (2 levels) in perform' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.0.6/lib/rails_multisite/connection_management.rb:63:inwith_connection’
/var/www/discourse/app/jobs/base.rb:219:in block in perform' /var/www/discourse/app/jobs/base.rb:215:ineach’
/var/www/discourse/app/jobs/base.rb:215:in perform' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/processor.rb:185:inexecute_job’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/processor.rb:167:in block (2 levels) in process' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/middleware/chain.rb:128:inblock in invoke’
/var/www/discourse/lib/sidekiq/pausable.rb:136:in call' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/middleware/chain.rb:130:inblock in invoke’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/middleware/chain.rb:133:in invoke' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/processor.rb:166:inblock in process’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/processor.rb:137:in block (6 levels) in dispatch' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/job_retry.rb:108:inlocal’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/processor.rb:136:in block (5 levels) in dispatch' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq.rb:37:inblock in module:Sidekiq
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/processor.rb:132:in block (4 levels) in dispatch' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/processor.rb:243:instats’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/processor.rb:127:in block (3 levels) in dispatch' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/job_logger.rb:8:incall’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/processor.rb:126:in block (2 levels) in dispatch' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/job_retry.rb:73:inglobal’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/processor.rb:125:in block in dispatch' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/logging.rb:48:inwith_context’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/logging.rb:42:in with_job_hash_context' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/processor.rb:124:indispatch’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/processor.rb:165:in process' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/processor.rb:83:inprocess_one’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/processor.rb:71:in run' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/util.rb:16:inwatchdog’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.5/lib/sidekiq/util.rb:25:in `block in safe_thread’

The responses that are failing to parse are html error pages of two types.

Bad Requests 400

Summary

Job exception: 785: unexpected token at ’

Error 400 (Bad Request)!!1 *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}

400. That’s an error.

Your client has issued a malformed or illegal request. That’s all we know.

Request Too Large 413

Summary

Job exception: 785: unexpected token at ’

Error 413 (Request Entity Too Large)!!1 *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}

413. That’s an error.

Your client issued a request that was too large. That’s all we know.

A few questions / issues:

  • Is this something of concern?

  • Perhaps the JSON parsing should be in a begin / rescue?

3 Likes

Just a note that this is still the case. All errors from this screenshot (a production forum serving approx 50 daily active users) are from this plugin. Granted, the config needs to be tweaked here (e.g. limit usage exceeded), but it seems the plugin may need to handle these errors better.

Limit exceeded (434783 errors in screenshot)

Job exception: {"error"=>{"code"=>403, "message"=>"Daily Limit Exceeded", "errors"=>[{"message"=>"Daily Limit Exceeded", "domain"=>"usageLimits", "reason"=>"dailyLimitExceeded"}]}}
Trace

/var/www/discourse/plugins/discourse-translator/services/discourse_translator/google.rb:91:in result' /var/www/discourse/plugins/discourse-translator/services/discourse_translator/google.rb:57:indetect’
/var/www/discourse/plugins/discourse-translator/plugin.rb:108:in block in execute' /var/www/discourse/lib/distributed_mutex.rb:42:insynchronize’
/var/www/discourse/lib/distributed_mutex.rb:12:in synchronize' /var/www/discourse/plugins/discourse-translator/plugin.rb:107:inexecute’
/var/www/discourse/app/jobs/base.rb:232:in block (2 levels) in perform' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.0.7/lib/rails_multisite/connection_management.rb:63:inwith_connection’
/var/www/discourse/app/jobs/base.rb:221:in block in perform' /var/www/discourse/app/jobs/base.rb:217:ineach’
/var/www/discourse/app/jobs/base.rb:217:in perform' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:192:inexecute_job’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:165:in block (2 levels) in process' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/middleware/chain.rb:128:inblock in invoke’
/var/www/discourse/lib/sidekiq/pausable.rb:138:in call' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/middleware/chain.rb:130:inblock in invoke’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/middleware/chain.rb:133:in invoke' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:164:inblock in process’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:137:in block (6 levels) in dispatch' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/job_retry.rb:109:inlocal’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:136:in block (5 levels) in dispatch' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq.rb:37:inblock in module:Sidekiq
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:132:in block (4 levels) in dispatch' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:250:instats’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:127:in block (3 levels) in dispatch' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/job_logger.rb:8:incall’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:126:in block (2 levels) in dispatch' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/job_retry.rb:74:inglobal’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:125:in block in dispatch' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/logging.rb:48:inwith_context’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/logging.rb:42:in with_job_hash_context' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:124:indispatch’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:163:in process' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:83:inprocess_one’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:71:in run' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/util.rb:16:inwatchdog’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/util.rb:25:in `block in safe_thread’

Parse error (2036, 168 and 309 errors in screenshot)

Empty input () at line 1, column 1 [parse.c:978] in '<!DOCTYPE html> <html lang=en> <meta charset=utf-8> <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-
Trace

/var/www/discourse/plugins/discourse-translator/services/discourse_translator/google.rb:88:in parse' /var/www/discourse/plugins/discourse-translator/services/discourse_translator/google.rb:88:inresult’
/var/www/discourse/plugins/discourse-translator/services/discourse_translator/google.rb:57:in detect' /var/www/discourse/plugins/discourse-translator/plugin.rb:108:inblock in execute’
/var/www/discourse/lib/distributed_mutex.rb:42:in synchronize' /var/www/discourse/lib/distributed_mutex.rb:12:insynchronize’
/var/www/discourse/plugins/discourse-translator/plugin.rb:107:in execute' /var/www/discourse/app/jobs/base.rb:232:inblock (2 levels) in perform’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.0.7/lib/rails_multisite/connection_management.rb:63:in with_connection' /var/www/discourse/app/jobs/base.rb:221:inblock in perform’
/var/www/discourse/app/jobs/base.rb:217:in each' /var/www/discourse/app/jobs/base.rb:217:inperform’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:192:in execute_job' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:165:inblock (2 levels) in process’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/middleware/chain.rb:128:in block in invoke' /var/www/discourse/lib/sidekiq/pausable.rb:138:incall’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/middleware/chain.rb:130:in block in invoke' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/middleware/chain.rb:133:ininvoke’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:164:in block in process' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:137:inblock (6 levels) in dispatch’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/job_retry.rb:109:in local' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:136:inblock (5 levels) in dispatch’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq.rb:37:in block in <module:Sidekiq>' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:132:inblock (4 levels) in dispatch’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:250:in stats' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:127:inblock (3 levels) in dispatch’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/job_logger.rb:8:in call' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:126:inblock (2 levels) in dispatch’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/job_retry.rb:74:in global' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:125:inblock in dispatch’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/logging.rb:48:in with_context' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/logging.rb:42:inwith_job_hash_context’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:124:in dispatch' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:163:inprocess’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:83:in process_one' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:71:inrun’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/util.rb:16:in watchdog' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/util.rb:25:inblock in safe_thread’

SSL Error

Job exception: SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello A (OpenSSL::SSL::SSLError)
Trace

/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon/ssl_socket.rb:125:in connect_nonblock' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon/ssl_socket.rb:125:ininitialize’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon/connection.rb:455:in new' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon/connection.rb:455:insocket’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon/connection.rb:116:in request_call' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon/middlewares/mock.rb:56:inrequest_call’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon/middlewares/instrumentor.rb:34:in request_call' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon/middlewares/idempotent.rb:19:inrequest_call’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon/middlewares/base.rb:22:in request_call' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon/middlewares/base.rb:22:inrequest_call’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon/connection.rb:270:in request' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon.rb:250:inget’
/var/www/discourse/plugins/discourse-translator/services/discourse_translator/google.rb:86:in result' /var/www/discourse/plugins/discourse-translator/services/discourse_translator/google.rb:57:indetect’
/var/www/discourse/plugins/discourse-translator/plugin.rb:108:in block in execute' /var/www/discourse/lib/distributed_mutex.rb:42:insynchronize’
/var/www/discourse/lib/distributed_mutex.rb:12:in synchronize' /var/www/discourse/plugins/discourse-translator/plugin.rb:107:inexecute’
/var/www/discourse/app/jobs/base.rb:232:in block (2 levels) in perform' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.0.7/lib/rails_multisite/connection_management.rb:63:inwith_connection’
/var/www/discourse/app/jobs/base.rb:221:in block in perform' /var/www/discourse/app/jobs/base.rb:217:ineach’
/var/www/discourse/app/jobs/base.rb:217:in perform' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:192:inexecute_job’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:165:in block (2 levels) in process' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/middleware/chain.rb:128:inblock in invoke’
/var/www/discourse/lib/sidekiq/pausable.rb:138:in call' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/middleware/chain.rb:130:inblock in invoke’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/middleware/chain.rb:133:in invoke' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:164:inblock in process’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:137:in block (6 levels) in dispatch' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/job_retry.rb:109:inlocal’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:136:in block (5 levels) in dispatch' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq.rb:37:inblock in module:Sidekiq
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:132:in block (4 levels) in dispatch' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:250:instats’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:127:in block (3 levels) in dispatch' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/job_logger.rb:8:incall’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:126:in block (2 levels) in dispatch' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/job_retry.rb:74:inglobal’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:125:in block in dispatch' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/logging.rb:48:inwith_context’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/logging.rb:42:in with_job_hash_context' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:124:indispatch’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:163:in process' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:83:inprocess_one’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/processor.rb:71:in run' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/util.rb:16:inwatchdog’
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/sidekiq-5.2.7/lib/sidekiq/util.rb:25:in `block in safe_thread’