Enviando muitas requisições para upload de vídeo/áudio ao editar post

Olá a todos! Gostaria de reportar um bug.
Reproduzido nas versões v2.4.5 e v2.5.0.

Pré-requisitos

  • Crie uma postagem com um upload de vídeo/áudio.
  • Testei com upload de mídia segura, mas deve ser reproduzido também com mídia não segura.
  • Inicie a edição da postagem.
  • Abra o console de desenvolvedor do navegador. Opcionalmente, configure um filtro para a API de upload.
  • Aguarde até que todas as solicitações sejam concluídas e limpe o console.

Passos para reproduzir

  • Digite qualquer coisa na área esquerda (de edição).
  • Verifique o console de desenvolvedor do navegador.

Resultado atual

  • Cada tecla pressionada é considerada uma alteração, então a digitação simples está constantemente criando eventos de upload de vídeo.
  • Muitas alterações causarão o envio de uma grande quantidade de solicitações, o que leva ao bloqueio de solicitações devido ao limite de taxa da API e ao deslogamento automático do fórum.

Resultado esperado

  • Nenhuma solicitação de upload de áudio/vídeo durante a edição da postagem

Veja o GIF:

Nota sobre o bug:

Esta linha é a causadora do bug. Ela chama a função load do elemento DOM

3 curtidas

Isso persiste na beta 2.6?

Sim, o problema persiste na versão 2.6beta, assim como no último commit (208d85aaff0392a3a796f84ea78670def6ed7b8e) da branch test-passed.

Isso é estranho. Só consigo reproduzir o problema se selecionar a caixa de seleção “Desabilitar cache” na aba Rede do meu inspetor web. Quando desmarco “Desabilitar cache”, obtenho os resultados esperados. Estou usando o Chrome no Ubuntu. Pelo seu vídeo, parece que você não tem “Desabilitar cache” selecionado, então não tenho certeza do que está causando a diferença.

1 curtida

“Desativar cache” não deve afetar o envio de solicitações. Isso afeta apenas a origem do resultado de uma solicitação — se vem do cache do navegador ou da fonte real.

Essas solicitações de upload são enviadas pelo código que re-renderiza a prévia a cada tecla pressionada, o que causa a criação de um novo elemento DOM de vídeo/áudio. Portanto, load é chamado para um novo elemento DOM, o que definitivamente deve enviar uma solicitação.
Mesmo que fosse um elemento DOM “em cache” (nem sempre recém-criado), ele envia uma solicitação apenas uma vez, independentemente da opção “Desativar cache”.

Eu analisei isso e consigo reproduzir parcialmente o problema tanto com uploads de vídeo seguros quanto não seguros. Em certo ponto, parece que há um cache e as requisições em excesso param, mas ainda assim é um problema. A linha que você apontou:

foi adicionada por mim, mas atualmente não parece afetar nada. Se eu removê-la, as prévias de vídeo continuam funcionando normalmente. Sei que realizamos outros trabalhos com miniaturas de vídeo etc., que provavelmente corrigiram qualquer problema para o qual eu tinha colocado essa linha ali. Portanto, acho que vou apenas removê-la, o que resolverá o problema das múltiplas requisições.

3 curtidas

Fundimos uma correção FIX: Remove unnecessary audio/video parent element load by martin-brennan · Pull Request #10511 · discourse/discourse · GitHub. Agradecemos, aliás, pelo relatório detalhado do bug! @kkurdupov

4 curtidas