Sto riscontrando un problema nella mia community. Non riesco a “eliminare tutti i post” di alcuni utenti. Per quanto posso vedere, il problema si verifica solo con account più vecchi che hanno molti post. Gli account più recenti non hanno questo problema.
Ho controllato le impostazioni del sito e ho aumentato il limite per l’eliminazione di tutti i post a 10.000.
Attualmente sto cercando di eliminare un utente con circa 900 post. L’utente non vuole essere anonimizzato e minaccia azioni legali se l’account e i post non verranno rimossi. Premo il pulsante “elimina tutti” e dopo circa un minuto ricevo questo messaggio:
Prova ad andare su Amministrazione / Log / Log degli errori. Quindi riprova a eliminare i post. Speriamo che ci sia una voce nel log per il post che sta causando il problema.
Scusate, dopo un’analisi più attenta, sembra che quell’errore sia legato a qualcos’altro.
Ora vedo questo e sospetto che possa essere dovuto a un timeout della richiesta:
Ho scritto una piccola app che chiama l’API di Discourse sulla mia installazione. Elimina ogni singolo post individualmente, invece di farlo in batch. Quindi, per 700 post, effettua 700 chiamate API. Non è il metodo più efficiente, ma mi è stato utile.
Vedo che ci sono 20 post problematici. Sembra che la funzione “elimina tutto” si fermi non appena incontra uno di questi e non riesca a eliminarli. L’API non è riuscita a eliminarli per qualche motivo. Ora li ho eliminati manualmente la maggior parte, entrando nel post e premendo il pulsante elimina come farebbe normalmente un moderatore.
Rimangono ancora circa 5 che non riesco a eliminare, né tramite API né in modo normale. Non vedo alcuna somiglianza tra di loro. Alcuni si trovano in discussioni molto lunghe, altri in discussioni brevi. Alcuni sono risposte, hanno like, hanno immagini, altri no. Quando provo a eliminarli tramite l’interfaccia utente standard, appare questa finestra di errore:
Alcuni dei miei utenti hanno segnalato di ricevere la stessa finestra quando provano a eliminare i propri post. Ho ipotizzato che fosse dovuto a un problema di connessione o simile, dato che quasi tutti sono su mobile, ma potrebbe trattarsi di qualcos’altro.
Quando provo a eliminarli manualmente, ottengo questo log:
I cinque post problematici rientrano tutti in due grandi argomenti. Li abbiamo chiusi di recente perché stavano diventando troppo grandi. Uno dei due argomenti conta 55.000 post, l’altro 17.000. Immagino che ci sia molta elaborazione da fare quando un post all’interno di un argomento così vasto viene rimosso, e che questo causi un timeout di qualche tipo, ma è solo un’ipotesi.
Ora sono bloccato. Non riesco a eliminare i post in quei topic lunghi e non riesco a eliminare i topic. Entrambe le operazioni si concludono con la finestra di dialogo 502 gateway.
In genere, i post su Discourse vengono solo soft-deleted e non hard-deleted. Con il comando destroy li hai semplicemente eliminati dal database, e ti ho consigliato di usarlo solo perché i post che stavi cercando di eliminare appartenevano a topic incredibilmente lunghi.
Non consiglio di utilizzare questo metodo né per i post né per i topic. Non potranno mai essere ripristinati e, da quanto ho capito, stai lavorando su un database di un sito in produzione, con il rischio di rompere l’intero sito se qualcosa va storto. Tuttavia, se desideri utilizzare il comando destroy, sei libero di farlo. Dovresti sempre eseguire un backup se intendi usare questo tipo di comandi.
Solo una nota per dire che, per evitare questo tipo di problemi di prestazioni , abbiamo anche introdotto alcune impostazioni per evitare la creazione di megatopic. Per i dettagli, vedi The MEGATOPIC: public good, or public menace?
Grazie per il consiglio. È esattamente ciò che mi aspettavo e userò il comando destroy solo come ultima risorsa.
Dato che normalmente le pubblicazioni vengono eliminate in modo soft, sembra che vengano scritti molti altri elementi invece di cancellare semplicemente il record. Forse è per questo che non funziona bene quando si eliminano le pubblicazioni da un mega argomento? Forse ci sono troppe operazioni da eseguire e si verifica un timeout?
Mi piacerebbe trovare un modo per risolvere il problema senza dover ricorrere al comando della console, che è rischioso.
Grazie. Ho modificato il limite massimo di argomenti a 2500. Gli utenti avevano chiesto di rimuovere il limite qualche tempo fa, il che ha portato alla creazione di questi argomenti enormi. Tuttavia, gli argomenti enormi non sono adatti al forum. Le prestazioni del server erano fortemente compromesse durante i periodi di punta, quando molte persone rispondevano ad essi. Abbiamo finito per chiuderli per evitare che ciò accadesse, ma ora siamo ancora bloccati con questi argomenti massicci che causano altri problemi.
La soluzione più semplice è che alcuni moderatori si mettano al lavoro e inizino a dividere (e poi chiudere) i megatemi in più argomenti, ad esempio:
[Titolo del megatema] parte 1
[Titolo del megatema] parte 2
[Titolo del megatema] parte 3
[Titolo del megatema] parte […]
[Titolo del megatema] parte 10
Ogni parte sarà collegata automaticamente alla precedente e alla successiva, quindi gli utenti non dovrebbero incontrare difficoltà di navigazione e il problema delle prestazioni dovrebbe essere risolto definitivamente.
Sì, sarà un lavoro noioso da fare, ma questo è anche uno dei motivi per cui avere un argomento con 55.000 o 17.000 messaggi è assolutamente inutile, dato che nessuno li leggerà.