Bug de exclusão permanente

Acho que há um bug com a exclusão permanente.

Excluí algumas postagens. Agora não consigo abrir a lista de postagens excluídas.

Você pode ver aqui que ainda tenho 342 postagens excluídas. Mas quando clico nelas. Leva a uma página 404.

Ainda consigo abrir a lista de exclusão de outros usuários, mas não a minha.

Há algo que possamos fazer para consertar isso?

3 curtidas

Ok, acho que descobri os passos para recriar o bug.

Não tenho certeza se você precisa de duas contas, mas aqui está a minha situação:

  1. A Conta A cria um tópico, depois fixa e fecha o tópico.
  2. A Conta A exclui o tópico temporariamente.
  3. Espere 5 minutos, faça login na Conta B e abra a lista de exclusões da Conta A (por exemplo: www.example.com/u/username/deleted-posts)
  4. Encontre a postagem que a Conta A acabou de excluir temporariamente, abra-a.
  5. Se você tentar excluir permanentemente a postagem, uma mensagem de erro será exibida: não é possível excluir a postagem porque existem outras postagens.
  6. Você precisa excluir a mensagem de fixar e fechar tópico abaixo da postagem, depois tente excluir permanentemente novamente.
  7. Você terá sucesso, mas agora não poderá mais abrir a lista de exclusões da Conta A.
3 curtidas

Alguém poderia dar uma olhada nisso, por favor?

Eu estava limpando algumas postagens que continham informações sensíveis e agora estamos presos…

3 curtidas

Você ainda consegue acessar as postagens excluídas do tópico/mensagem privada e excluí-las permanentemente de lá, ou você não consegue mais ver suas postagens excluídas?

2 curtidas

Consigo acessá-los a partir da publicação.

Mas como não sei quais são as publicações, a lista de exclusão de publicações é crítica.

Sem ela, preciso percorrer manualmente todas as mensagens privadas e tópicos públicos para encontrá-los.

2 curtidas

Eu também tentei o deleted-posts.json. Mas a informação não contém posts excluídos.

Ele só mostra coisas como “user_badges” e outras informações do usuário.

2 curtidas

Se eu conseguir uma lista de IDs de posts excluídos de alguma forma, isso também ajudará.

2 curtidas

Estou tentando reproduzir:

  • O administrador A cria um novo tópico, o fixa globalmente (para sempre) e, em seguida, o fecha
  • O administrador A, em seguida, exclui o tópico logicamente

  • O administrador B encontra este tópico acessando a lista /deleted-posts do administrador A a partir do perfil dele
  • O administrador B tenta excluir permanentemente o tópico - recebe um erro “Você não pode excluir permanentemente este tópico porque existem outras postagens.”
  • O administrador B exclui as pequenas postagens de ação de ‘fixar’ e ‘fechar’
  • O administrador B tenta novamente a exclusão permanente - a exclusão é bem-sucedida

  • No entanto, o administrador B agora não consegue acessar /deleted-posts do administrador A, com um erro de GET https://greedy.jammydodger.monster/posts/jammydodger/deleted?offset=0

Embora o administrador A e o administrador C ainda possam acessar a lista /deleted-posts do administrador A. A curto prazo, @VincentAlse, você poderia usar a conta de administrador secundária para acessar a lista /deleted-posts para encontrar as outras postagens que deseja excluir? Alternativamente, você poderia usar uma consulta data-explorer para identificá-las?

3 curtidas

Olá @JammyDodger

Obrigado pela confirmação. Acabei de tentar o Admin C (com a conta antiga e uma conta recém-criada). Não funcionou para mim. Acho que o motivo é que eu estava excluindo posts de muitas contas diferentes e buguei a lista de exclusão para a maioria delas.

Vou dar uma olhada no explorador de dados. Posso consultar posts excluídos com ele?

2 curtidas

Ah, que pena. Se você tiver acesso ao plugin de exploração de dados, acho que algo como isto deve replicar a lista /deleted/posts para um usuário específico (com o post_id incluído para garantir):

-- [params]
-- user_id :user_id

SELECT p.created_at AS reltime$time,
       id AS post_id,
       id
FROM posts p
WHERE p.user_id = :user_id
AND p.deleted_at IS NOT NULL
ORDER BY p.created_at DESC
4 curtidas

Deixe-me tentar.

3 curtidas

Isso funcionou para você, @VincentAlse? Acho que deve haver várias maneiras de encontrar as postagens que você deseja excluir, caso essa não tenha fornecido a lista de que você precisava?

3 curtidas

Uma pergunta idiota. O que é user_id? Acho que meu user_id é 1 com base na página .json.

Recebo esta mensagem: ActiveRecord::PreparedStatementInvalid: valor ausente para :user_id em /*

@JammyDodger

1 curtida

Olhando para essa captura de tela, parece que você ajustou o parâmetro no topo, o que na verdade o impedirá de funcionar. Se você o deixar como :user_id, ele lhe dará uma caixa de seleção ao executá-lo, onde você poderá digitar um nome de usuário. :+1:

Alternativamente, você poderia descartar o parâmetro e adicionar o ID do usuário que você obteve do JSON à linha WHERE p.user_id =.

Isso faz sentido?

3 curtidas

Parece que você já pode estar recebendo ajuda, mas clicar nele me leva para /u/deleted-posts, o que funciona.

1 curtida

Funciona agora!

Eu pensei que precisava colocar user_id no código.

Muito obrigado @JammyDodger

4 curtidas

Corrigi o bug que você reportou com este PR ontem, que já foi mesclado e pode ser implantado se você atualizar sua instância do Discourse:

No entanto, descobrimos que a exclusão permanente de tópicos poderia deixar posts de ações pequenas órfãos no banco de dados. Este segundo bug foi corrigido com:

Acho que tudo deve estar funcionando bem agora. Por favor, nos informe se tiver mais problemas.

6 curtidas

Este tópico foi fechado automaticamente após 3 dias. Novas respostas não são mais permitidas.