Erro na Caixa de Entrada de Mensagens do Usuário 500

Isso só é chamado em uploads seguros. Minha suposição é que, no passado, você o configurou e, desde então, o removeu.

O que isso retorna?

./launcher enter app
rails c
> Upload.where('secure').count

cc @martin

(também temos um bug de nomenclatura em site_setting.rb:157:in absolute_base_url. Deveria ser chamado de s3_absolute_base_url)

1 curtida

Ei Sam,

muito obrigado por dar uma olhada nisso!

Bem, até onde eu sei, não ativamos o recurso de upload seguro. Mas, como não sou o único administrador, não posso ter certeza disso. E, se entendi corretamente, sua contagem deveria retornar 0 quando o recurso nunca foi ativado? Bem, é muito mais do que 0 :wink: 235 na verdade :blush:

Isso retorna

[1] pry(main)> Upload.where('secure').count
=> 235
[2] pry(main)> 

Há algo que eu possa fazer para corrigir isso?

Devo desativar a configuração seucure media allow embeded images in emails?

Vale a pena tentar ativar secure media e depois desativá-lo?

Muito obrigado por tentar ajudar aqui!

1 curtida

Se você não tem atualmente a mídia segura ativada, não precisa ativá-la. Ela deve ter sido ativada em algum momento, devido à quantidade de uploads seguros que você possui. Tente executar a tarefa rake uploads:secure_upload_analyse_and_update; isso irá percorrer todos os seus uploads e marcá-los como seguros ou não seguros com base nas configurações do site (se você tiver a mídia segura desativada, todos serão marcados como não seguros).

4 curtidas

Olá Martin,

muito obrigado. Vou tentar isso hoje à noite.

Só para confirmar: atualmente, temos ativado

Devemos ativar essa opção também? Ou isso não afeta o processo de marcação?

E só para esclarecer: após o comando rake, preciso reconstruir o aplicativo? Ou isso não é necessário, mas talvez recomendado?

Muito obrigado!

Essa opção está ativada por padrão, mas não faz nada a menos que o Secure Media esteja habilitado.

Acho que uma reconstrução não é necessária. Executei isso em sites em produção sem problemas.

1 curtida

Muito obrigado!

Vou tentar e aviso amanhã.

OBRIGADO OBRIGADO!

1 curtida

Estou chutando, mas o backtrace parece indicar que o sistema está tentando serializar uma lista de mensagens ou uma lista de informações extraídas de mensagens, e falha ao serializar uma imagem específica. A imagem é presumivelmente a foto de perfil de um usuário. Apenas uma conta está afetada, então talvez a imagem problemática pertença a um usuário que só se comunicou com essa conta afetada.

Possivelmente, a construção da lista que está falhando refere-se às N mensagens mais recentes. Talvez você pudesse enviar N mensagens (com títulos de tópico diferentes) para a conta afetada, de modo que a lista contenha apenas mensagens válidas?

4 curtidas

Martin, obrigado novamente pela dica.

Bem, tentei executar rake uploads:secure_upload_analyse_and_update, mas a saída foi:

Esta tarefa só funciona para armazenamento externo.

Então, tentei ativar a opção ativar mídia segura. Mas, infelizmente — ou digamos, para evitar erros de administração —, essa opção só pode ser ativada configurando buckets do Amazon S3. E tenho certeza absoluta de que ninguém jamais fez uma configuração S3 antes.

Portanto, não consigo executar o script rake porque não tenho nenhum armazenamento S3 disponível. Assim, não posso dizer se isso tem algum efeito em pry(main)> Upload.where('secure').count.

Estou me perguntando por que ainda temos alguns uploads seguros quando nunca ativamos o S3.

Alguma pista sobre isso?

Mas, na verdade,

Funcionou. Então estou bem por enquanto. Mesmo sem ter ideia do motivo desse comportamento. Faria questão de aprender qual poderia ser outra causa.

Obrigado antecipadamente e por todo o tempo que vocês já dedicaram a isso.

Bem, Ed_S, o que posso dizer além de:

OBRIGADO MUITÍSSIMO

Na verdade, sua pequena dica funcionou. Eu apenas escrevi uma nova mensagem e publiquei outra resposta, e então o erro desapareceu.

Mesmo sendo meu herói por enquanto, isso não te isenta de mais perguntas :wink: Espero que você não se importe em me ajudar a entender melhor o que diabos aconteceu aqui.

Primeiro, para me dar uma melhor compreensão de como ler os logs. Quero dizer, que grande palpite você deu. O que te levou a pensar que um problema de serialização poderia ser o culpado?

lib/url_helper.rb:90:in `cook_url'
app/models/topic.rb:126:in `image_url'
app/serializers/listable_topic_serializer.rb:34:in `image_url'

Por que não o cook_url ou, eu não sei, qualquer outra coisa?

Em segundo lugar, quais são as suas observações? Preciso estar atento para evitar que esse problema aconteça novamente? Ou talvez com outro usuário?

Você acha que há uma maneira de identificar qual mensagem, usuário ou imagem foi o culpado aqui? Existe alguma outra chance de investigar isso além de… clicar nas mensagens e torcer para que uma das postagens de mensagens privadas cause algum efeito?

O engraçado é que alguns administradores fizeram exatamente a mesma coisa, como escrever uma nova mensagem (tópico) para a conta afetada, e não experimentamos nenhum outro comportamento. De alguma forma, a última mensagem enviada por mim para a conta afetada foi o que resolveu.

E por último, posso pegar seu número de telefone para futuros gritos de emergência? Brincadeira! :wink:

Mas, falando sério, muito, muito, muitíssimo obrigado. Eu realmente estava preso aqui e estou tão feliz que nosso usuário – como mencionei, um de nossos administradores – possa retomar o curso. Obrigado, Ed_S!

2 curtidas

:clap:
Muito boa a sua tentativa!

1 curtida

Haha - parece que tive sorte. O ponto sobre um stack trace é que ele vai do específico ao geral - não é apenas uma lista de coisas, mas uma imagem das interações aninhadas, do código geral até a maquinaria específica. Então, a ideia de ‘imagem’ pareceu interessante, porque só há imagens de perfil na lista de mensagens. E acho que já vimos problemas estranhos com imagens de perfil antes.

Mas não faço ideia de por que o código está acessando o armazenamento seguro, se você nunca o usou.

Suspeito que uma consulta ao banco de dados pudesse listar as imagens que seriam buscadas neste caso, mas não sei como você poderia encontrar o perfil problemático. Se, de fato, essa for a história por trás do stack trace.

2 curtidas

Existe uma tarefa rake para corrigir isso:

./launcher enter app
rake uploads:secure_upload_analyse_and_update

Recomendo que você execute isso.

1 curtida

Oi, Sam,

muito obrigado por ainda ter isso na sua lista. Estou realmente feliz em receber mais ajuda para resolver isso corretamente.

Bem, tentei:

Mas, na verdade, a mesma saída foi exibida: que isso só funciona para armazenamentos S3 externos e, como não temos um configurado, estou um pouco perdido aqui.

Aqui está meu console:

./launcher enter app
rake uploads:secure_upload_analyse_and_update
This task only works for external storage.

Estou deixando passar algo? Ou é um bug e deveria funcionar com secure media desativado?

Obrigado pela sua expertise.

1 curtida

Bem, na verdade, às vezes é a sorte que nos mantém vivos, não é?

Ainda assim, obrigado. Fiquei realmente um pouco frustrado, e apagar todas as mensagens foi realmente apenas uma última opção.

Bem, talvez você possa me dar uma dica sobre os tópicos aqui. Para mim, sendo relativamente novo no Docker e no Discourse, estou um pouco perdido com sua sugestão de executar uma consulta ao banco de dados. Qual banco de dados é usado pelo Discourse e posso fazer algo como:

./launcher enter app
mysql select bla

Ou é MongoDB? Mas entrar e executar a consulta dentro do container é pelo menos o caminho certo a seguir, não é?

E existe uma lista de campos ou propriedades que eu possa explorar, como uma referência ou algo assim, para que eu possa ter algumas ideias sobre a consulta correta?

Mas só para deixar isso claro: mesmo que eu consiga obter a lista de imagens de perfil na lista de caixas de entrada, ainda não há nenhuma sugestão sobre como filtrar qual seria o culpado ou o que fazer, mesmo que o encontremos, certo? Alguma ideia sobre isso?

Além disso, estou surpreso de que existam problemas comuns com imagens de perfil. Existe algum tópico específico que eu possa ler para obter mais informações sobre isso? Ou talvez algum tipo de guia sobre como lidar com imagens de perfil ou restringir o uso ou algo assim? Para evitar tais problemas?

Ed_S, muito obrigado por ficar comigo.

Não sei muito sobre o lado do banco de dados, mas recomendo o plugin Data Explorer, que é um plugin oficialmente suportado, e este tópico. (É melhor iniciar um novo tópico se você tiver novas perguntas — outros podem se beneficiar da discussão, e um título adequado atrairá mais ajuda.)

Edição: talvez veja também

onde há indícios de como o mecanismo funciona e como você pode consultá-lo.

1 curtida

Olá Ed_S,

muito obrigado pelas dicas. O plugin Data Explorer é incrível! Para análises mais aprofundadas, é um excelente ponto de partida!

A dica sobre os avatares perdidos também foi útil. Verifiquei e parece estar tudo certo. Então, muito obrigado por compartilhar essa informação.

Bom, enquanto funcionar, estou muito feliz. Vou torcer para que dure :wink:
Obrigado novamente, Ed_S, pela ajuda contínua.

Se mais alguém se deparar com esse erro, por favor, me conte o que você experimentou ou o que poderia ser feito para evitar esses problemas.

A todos, obrigado por lerem.

1 curtida

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.