Error de borrado permanente

Creo que hay un error con la eliminación permanente.

Elimino un par de publicaciones. Ahora no puedo abrir la lista de publicaciones eliminadas.

Puedes ver aquí que todavía tengo 342 publicaciones eliminadas. Pero cuando hago clic en ella. Me lleva a una página 404.

Todavía puedo abrir la lista de eliminaciones de otros usuarios, pero no la mía.

¿Hay algo que podamos hacer para solucionarlo?

3 Me gusta

Okay, creo que he descubierto los pasos para reproducir el error.

No estoy seguro de si necesitas dos cuentas, pero esta es mi situación:

  1. La cuenta A crea un tema, luego lo fija y lo cierra.
  2. La cuenta A elimina el tema de forma temporal.
  3. Espera 5 minutos, inicia sesión con la cuenta B y abre la lista de eliminaciones de la cuenta A (por ejemplo: www.example.com/u/username/deleted-posts).
  4. Encuentra la publicación que la cuenta A acaba de eliminar temporalmente, ábrela.
  5. Si intentas eliminar la publicación de forma permanente, aparecerá un mensaje de error: no se puede eliminar la publicación porque hay otras publicaciones.
  6. Necesitas eliminar el mensaje de fijar y cerrar tema debajo de la publicación, luego intenta eliminarla de forma permanente de nuevo.
  7. Tendrás éxito, pero ahora no podrás abrir la lista de eliminaciones de la cuenta A.
3 Me gusta

¿Alguien podría echarle un vistazo a esto, por favor?

Estaba limpiando algunas publicaciones que contenían información sensible y ahora estamos atascados…

3 Me gusta

¿Todavía puedes acceder a las publicaciones eliminadas del tema/mensaje privado y eliminarlas permanentemente desde allí, o ya no puedes ver tus publicaciones eliminadas en absoluto?

2 Me gusta

Puedo acceder a ellos desde la publicación.

Pero como no sé cuáles son esas publicaciones, la lista de publicaciones a eliminar es crítica.

Sin ella, debo revisar manualmente todos los mensajes privados y temas públicos para encontrarlos.

2 Me gusta

También probé con deleted-posts.json. Pero la información no contiene publicaciones eliminadas.

Solo muestra cosas como “user_badges” y otra información del usuario.

2 Me gusta

Si de alguna manera puedo obtener una lista de IDs de publicaciones eliminadas, eso también me ayudará.

2 Me gusta

Estoy intentando reproducir:

  • El administrador A crea un nuevo tema, lo fija globalmente (para siempre) y luego lo cierra.
  • El administrador A luego elimina suavemente el tema.

  • El administrador B encuentra este tema accediendo a la lista de /deleted-posts del administrador A desde su perfil.
  • El administrador B intenta eliminar permanentemente el tema y recibe un error “No puedes eliminar permanentemente este tema porque hay otras publicaciones”.
  • El administrador B elimina las pequeñas publicaciones de acción de ‘fijar’ y ‘cerrar’.
  • El administrador B reintenta la eliminación permanente; la eliminación es exitosa.

  • Sin embargo, el administrador B ahora no puede acceder a /deleted-posts del administrador A, con un error de GET https://greedy.jammydodger.monster/posts/jammydodger/deleted?offset=0

Aunque el administrador A y el administrador C todavía pueden acceder a la lista de /deleted-posts del administrador A. A corto plazo, @VincentAlse, ¿podrías usar la cuenta de administrador secundaria para acceder a la lista de /deleted-posts y encontrar las otras publicaciones que deseas eliminar? Alternativamente, podrías usar una consulta de data-explorer para identificarlas.

3 Me gusta

Hola @JammyDodger

Gracias por la confirmación. Acabo de probar el Admin C (con la cuenta antigua y una cuenta recién creada). No me funciona. Creo que la razón es que estuve eliminando publicaciones de muchas cuentas diferentes y se estropeó la lista de eliminaciones para la mayoría de ellas.

Voy a echar un vistazo a data-explorer. ¿Puedo consultar publicaciones eliminadas con él?

2 Me gusta

Ah, qué desafortunado. Si tienes acceso al plugin explorador de datos, creo que algo como esto debería replicar la lista de /deleted/posts para un usuario en particular (con el post_id incluido para mayor seguridad):

-- [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 Me gusta

Déjame intentarlo.

3 Me gusta

¿Te funcionó eso, @VincentAlse? Creo que debería haber varias formas de encontrar las publicaciones que quieres eliminar si esa no te dio la lista que necesitabas.

3 Me gusta

Una pregunta tonta. ¿Qué es user_id? Creo que mi user_id es 1 según la página .json.

Recibo este mensaje: ActiveRecord::PreparedStatementInvalid: falta valor para :user_id en /*

@JammyDodger

1 me gusta

Mirando esa captura de pantalla, parece que has modificado el parámetro de la parte superior, lo que en realidad impedirá que funcione. Si lo dejas como :user_id, te aparecerá un cuadro de selección cuando lo ejecutes donde podrás escribir un nombre de usuario. :+1:

Alternativamente, podrías eliminar el parámetro y añadir el ID de usuario que obtuviste del JSON a la línea WHERE p.user_id =.

¿Tiene sentido?

3 Me gusta

Parece que ya estás recibiendo ayuda, pero al hacer clic en él me lleva a /u/deleted-posts, lo cual funciona.

1 me gusta

¡Ya funciona!

Pensé que necesitaba poner el user_id en el código.

Muchas gracias @JammyDodger

4 Me gusta

Corregí el error que informaste con este PR ayer, que ya se fusionó y puede ser desplegado si actualizas tu instancia de Discourse:

Sin embargo, descubrimos que eliminar permanentemente temas podría dejar publicaciones de acciones pequeñas huérfanas en la base de datos. Este segundo error se corrigió con:

Creo que todo debería funcionar bien ahora. Por favor, avísanos si tienes más problemas.

6 Me gusta

Este tema se cerró automáticamente después de 3 días. Ya no se permiten nuevas respuestas.