Estou vendo que o servidor enviou vários e-mails com sucesso para este novo tópico para todos que estavam acompanhando essa categoria, não estou vendo nenhum erro nos logs de e-mail ou no servidor de e-mail.
Para essa entrada, sim, ela ainda estava presa em um loop de retentativas até ontem, quando, após centenas de retentativas, eu finalmente me cansei e a deletei. Espero não ter quebrado nada.
Não a vi novamente, mas também não houve um evento que disparasse centenas de e-mails em uma única postagem. Seria bom, no entanto, entender de onde isso veio e o que significa.
Há alguns dias, vi esse erro em três mensagens, e elas não eram críticas, então excluí os trabalhos depois que uma nova tentativa não foi bem-sucedida.
Agora tenho 2001 delas, e minha conta de teste não recebeu um resumo semanal que deveria ter recebido.
Atualizei para bf987af3ca e tentei tudo novamente, mas ainda tenho pelo menos 38 de Jobs::HandledExceptionWrapper: Wrapped ActiveRecord::RecordInvalid: Validation failed: Post has already been taken aparecendo no meu console sidekiq.
Sem mais atualizações, agora estou com 30. Eu suspeito que eles estão falhando por timeout, exceto que minha conta de teste recebeu o resumo semanal (atrasado), e presumo que isso esteja relacionado. Não tenho certeza de onde procurar nos logs para saber se algum deles está realmente desistindo.
Eles parecem falhar na maioria das vezes, mas ocasionalmente funcionam, o que definitivamente cheira a uma condição de corrida em algum lugar.
Meus backtraces parecem os mesmos que @RBoy e @md-misko viram, mas aqui está o backtrace completo, não apenas o truncado do botão "Copiar":
activerecord-7.0.3/lib/active_record/validations.rb:80:in `raise_validation_error'
activerecord-7.0.3/lib/active_record/validations.rb:53:in `save!'
activerecord-7.0.3/lib/active_record/transactions.rb:302:in `block in save!'
activerecord-7.0.3/lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status'
activerecord-7.0.3/lib/active_record/connection_adapters/abstract/database_statements.rb:314:in `transaction'
activerecord-7.0.3/lib/active_record/transactions.rb:350:in `with_transaction_returning_status'
activerecord-7.0.3/lib/active_record/transactions.rb:302:in `save!'
activerecord-7.0.3/lib/active_record/suppressor.rb:54:in `save!'
activerecord-7.0.3/lib/active_record/persistence.rb:55:in `create!'
activerecord-7.0.3/lib/active_record/relation.rb:869:in `_create!'
activerecord-7.0.3/lib/active_record/relation.rb:115:in `block in create!'
activerecord-7.0.3/lib/active_record/relation.rb:880:in `_scoping'
activerecord-7.0.3/lib/active_record/relation.rb:428:in `scoping'
activerecord-7.0.3/lib/active_record/relation.rb:115:in `create!'
activerecord-7.0.3/lib/active_record/relation.rb:219:in `block in create_or_find_by!'
activerecord-7.0.3/lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction'
activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
activesupport-7.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
activerecord-7.0.3/lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'
activerecord-7.0.3/lib/active_record/connection_adapters/abstract/database_statements.rb:316:in `transaction'
activerecord-7.0.3/lib/active_record/transactions.rb:209:in `transaction'
activerecord-7.0.3/lib/active_record/relation/delegation.rb:67:in `block in transaction'
activerecord-7.0.3/lib/active_record/relation.rb:880:in `_scoping'
activerecord-7.0.3/lib/active_record/relation.rb:428:in `scoping'
activerecord-7.0.3/lib/active_record/relation/delegation.rb:67:in `transaction'
activerecord-7.0.3/lib/active_record/relation.rb:219:in `create_or_find_by!'
activerecord-7.0.3/lib/active_record/querying.rb:22:in `create_or_find_by!'
/var/www/discourse/lib/email/sender.rb:498:in `get_reply_key'
/var/www/discourse/lib/email/sender.rb:105:in `send'
/var/www/discourse/app/jobs/regular/user_email.rb:83:in `send_user_email'
/var/www/discourse/app/jobs/regular/user_email.rb:38:in `execute'
/var/www/discourse/app/jobs/base.rb:232:in `block (2 levels) in perform'
/var/www/discourse/lib/rails_multisite/connection_management.rb:80:in `with_connection'
/var/www/discourse/app/jobs/base.rb:221:in `block in perform'
/var/www/discourse/app/jobs/base.rb:217:in `each'
/var/www/discourse/app/jobs/base.rb:217:in `perform'
sidekiq-6.4.2/lib/sidekiq/processor.rb:196:in `execute_job'
sidekiq-6.4.2/lib/sidekiq/processor.rb:164:in `block (2 levels) in process'
sidekiq-6.4.2/lib/sidekiq/middleware/chain.rb:138:in `block in invoke'
/var/www/discourse/lib/sidekiq/pausable.rb:138:in `call'
sidekiq-6.4.2/lib/sidekiq/middleware/chain.rb:140:in `block in invoke'
sidekiq-6.4.2/lib/sidekiq/middleware/chain.rb:143:in `invoke'
sidekiq-6.4.2/lib/sidekiq/processor.rb:163:in `block in process'
sidekiq-6.4.2/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'
sidekiq-6.4.2/lib/sidekiq/job_retry.rb:114:in `local'
sidekiq-6.4.2/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'
sidekiq-6.4.2/lib/sidekiq.rb:40:in `block in <module:Sidekiq>'
sidekiq-6.4.2/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'
sidekiq-6.4.2/lib/sidekiq/processor.rb:257:in `stats'
sidekiq-6.4.2/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'
sidekiq-6.4.2/lib/sidekiq/job_logger.rb:13:in `call'
sidekiq-6.4.2/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'
sidekiq-6.4.2/lib/sidekiq/job_retry.rb:81:in `global'
sidekiq-6.4.2/lib/sidekiq/processor.rb:124:in `block in dispatch'
sidekiq-6.4.2/lib/sidekiq/job_logger.rb:39:in `prepare'
sidekiq-6.4.2/lib/sidekiq/processor.rb:123:in `dispatch'
sidekiq-6.4.2/lib/sidekiq/processor.rb:162:in `process'
sidekiq-6.4.2/lib/sidekiq/processor.rb:78:in `process_one'
sidekiq-6.4.2/lib/sidekiq/processor.rb:68:in `run'
sidekiq-6.4.2/lib/sidekiq/util.rb:56:in `watchdog'
sidekiq-6.4.2/lib/sidekiq/util.rb:65:in `block in safe_thread'
Há alguma outra informação que eu possa fornecer para ajudar a depurar isso?
Descobri que meu servidor de e-mail estava usando um certificado para outro servidor em seu round-robin e esperava que a incompatibilidade de nome de host fosse o problema. Atualizei para b850c12793 no processo de mudança para um servidor que não tinha incompatibilidade de certificado, mas isso não resolveu o problema. Tentei novamente alguns dos trabalhos, mas nenhum deles foi concluído com sucesso. Portanto, este bug não é um sintoma de incompatibilidades de certificado ocultas.
Isso foi construído com discourse_docker 2a9faf7e5680b9.
Atualizar o discourse_docker para 241a42ce718, e com ele o discourse para 95e7e10417, também não resolveu o problema. Ainda tenho 30 dessas falhas sendo retentadas.
Pelo que você está descrevendo e olhando este post, pode haver vários problemas aqui:
O servidor pode não estar limitando suas tentativas de reenvio de e-mails, fazendo com que ele expire ou seja rejeitado pelo servidor de e-mail. Mas há algum outro problema subjacente se seus certificados e configuração forem válidos e ele ainda não estiver enviando os e-mails. Para alguns, também parece estar consumindo espaço em disco. Verifiquei o meu, mas não notei isso aqui.
Eu não fiquei sem espaço, e isso acontece mesmo quando seleciono exatamente um trabalho para reexecutar, então não parece uma condição de corrida. Claramente há mais de um problema aqui, e o que estou vendo aqui não está relacionado a esse tópico vinculado.
(Acontece que eu não tinha um problema de certificado, afinal; os nomes dos servidores estavam no nome alternativo do servidor. Mas eu mudei para usar o nome do host que corresponde ao SN de qualquer maneira, e não fez diferença.)
Estou enviando com sucesso um número tremendo de e-mails, apenas esses poucos trabalhos estão travados. Eu não sei, por exemplo, que entradas de log procurar para ajudar no diagnóstico.
Revisei meus 29 e-mails com falha para garantir que não havia nada crítico para enviar e, pelo que pude apurar, não havia. Portanto, excluí todos os trabalhos no sidekiq, caso isso se devesse a um problema transitório devido a trabalhos de e-mail que abrangiam atualizações. No entanto, sem aplicar mais atualizações, agora tenho outro caso isolado da mesma falha.
Estou apenas compartilhando isso como informação de que é um problema em andamento e não algo transitório incomum.