Bug di eliminazione permanente

Penso che ci sia un bug con l’eliminazione permanente.

Elimino un paio di post. Ora non riesco ad aprire l’elenco dei post eliminati.

Puoi vedere qui che ho ancora 342 post eliminati. Ma quando ci clicco sopra. Porta a una pagina 404.

Posso ancora aprire l’elenco delle eliminazioni di altri utenti ma non il mio.

C’è qualcosa che possiamo fare per risolvere il problema?

3 Mi Piace

Okay, I think I figured out the steps to recreate the bug.

I’m not sure you need two accounts but here is my situation:

  1. Account A creates a topic, then pin and close the topic.
  2. Account A soft deletes the topic.
  3. Wait for 5 min, log into Account B, and open Account A’s deletion list (for example: www.example.com/u/username/deleted-posts)
  4. Find the post Account A just soft deleted, open it.
  5. If you try to permanently delete the post, it’ll show an error message: post can’t be deleted because there are other posts.
  6. You need to delete the pin and close topic message below the post, then try permanently delete again.
  7. You will succeed, but now you can’t open Account A’s delation list anymore.
3 Mi Piace

Qualcuno potrebbe dare un’occhiata a questo, per favore?

Stavo pulendo alcuni post che contenevano informazioni sensibili e ora siamo bloccati…

3 Mi Piace

Puoi ancora accedere ai post eliminati dall’argomento/messaggio privato ed eliminarli definitivamente da lì, o non puoi più vedere i tuoi post eliminati?

2 Mi Piace

Posso accedervi dal post.

Ma dato che non so quali post siano, l’elenco dei post da eliminare è fondamentale.

Senza di esso, devo esaminare manualmente tutti i messaggi privati e gli argomenti pubblici per trovarli.

2 Mi Piace

Ho provato a eliminare anche deleted-posts.json. Ma le informazioni non contengono post eliminati.

Mostra solo cose come “user_badges” e altre informazioni sull’utente.

2 Mi Piace

Se potessi ottenere in qualche modo un elenco di ID di post eliminati, mi aiuterebbe anche.

2 Mi Piace

Sto cercando di riprodurre:

  • L’Admin A crea un nuovo argomento, lo “fissa” globalmente (per sempre) e poi lo chiude

  • L’Admin A elimina quindi l’argomento in modo “soft”

  • L’Admin B trova questo argomento accedendo all’elenco /deleted-posts dell’Admin A dal suo profilo

  • L’Admin B tenta di eliminare definitivamente l’argomento - riceve un errore “Non è possibile eliminare definitivamente questo argomento perché ci sono altri post.”

  • L’Admin B elimina i piccoli post d’azione “fissa” e “chiudi”

  • L’Admin B riprova l’eliminazione definitiva - l’eliminazione ha successo

  • Tuttavia, l’Admin B non può più accedere a /deleted-posts dell’Admin A, con un errore GET https://greedy.jammydodger.monster/posts/jammydodger/deleted?offset=0

Anche se l’Admin A e l’Admin C possono ancora accedere all’elenco /deleted-posts dell’Admin A. Nel breve termine, @VincentAlse, potresti utilizzare l’account admin secondario per accedere all’elenco /deleted-posts per trovare gli altri post che desideri eliminare? In alternativa, potresti utilizzare una query data-explorer per identificarli?

3 Mi Piace

Ciao @JammyDodger

Grazie per la conferma. Ho appena provato Admin C (sia con il vecchio account che con un account appena creato). Non funziona per me. Penso che il motivo sia che ho eliminato post per molti account diversi e ho corrotto l’elenco di eliminazione per la maggior parte di essi.

Diamo un’occhiata a data-explorer. Posso interrogare post eliminati con esso?

2 Mi Piace

Ah, questo è spiacevole. Se hai accesso al plugin esplora dati, penso che qualcosa di simile dovrebbe replicare l’elenco /deleted/posts per un particolare utente (con post_id aggiunto per sicurezza):

-- [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 Mi Piace

Ci provo.

3 Mi Piace

Ha funzionato per te @VincentAlse? Penso che dovrebbero esserci più modi per trovare i post che vuoi eliminare se quello non ti ha dato l’elenco di cui avevi bisogno?

3 Mi Piace

Una domanda stupida. Cos’è user_id? Penso che il mio user_id sia 1 in base alla pagina .json.

Ricevo questo messaggio: ActiveRecord::PreparedStatementInvalid: valore mancante per :user_id in /*

@JammyDodger

1 Mi Piace

Guardando quello screenshot, sembra che tu abbia modificato il parametro in alto, il che in realtà ne impedirà il funzionamento. Se lo lasci come :user_id, ti darà una casella di selezione quando lo esegui dove puoi digitare un nome utente. :+1:

In alternativa, potresti eliminare il parametro e aggiungere l’ID utente che hai ottenuto dal JSON alla riga WHERE p.user_id =.

Ha senso?

3 Mi Piace

Sembra che tu stia già ricevendo aiuto, ma cliccandoci si viene reindirizzati a /u/deleted-posts, che funziona.

1 Mi Piace

Ora funziona!

Pensavo di dover inserire user_id nel codice.

Grazie mille @JammyDodger

4 Mi Piace

Ho corretto il bug che hai segnalato con questo PR ieri, che è già stato unito e può essere distribuito se aggiorni la tua istanza Discourse:

Tuttavia, abbiamo scoperto che l’eliminazione forzata degli argomenti poteva lasciare post di azioni minori orfani nel database. Questo secondo bug è stato corretto con:

Penso che ora dovrebbe funzionare tutto correttamente. Fateci sapere se avete altri problemi.

6 Mi Piace

Questo argomento è stato chiuso automaticamente dopo 3 giorni. Non sono più consentite nuove risposte.