Numero errato di utenti nella panoramica dei gruppi

In qualche modo i numeri visualizzati nella panoramica dei gruppi per i livelli di fiducia da 0 a 4 sono errati (troppo alti)
Attualmente abbiamo solo 439 utenti (più system e discobot). (in passato avevamo più utenti)
Ma la panoramica dei gruppi mostra:

quando si clicca sul livello di fiducia 0 nella panoramica dei gruppi, viene mostrato il numero corretto:

livello di fiducia 0: 557 ma all’interno 439
livello di fiducia 1: 480 ma all’interno 412
livello di fiducia 2: 300 ma all’interno 298
livello di fiducia 3: 37 ma all’interno 35
livello di fiducia 4: 4 ma all’interno 2

anche un “select count(*) from users” restituisce 441, che corrisponde a 439 + system + discobot

I numeri visualizzati per tutti gli altri gruppi nella panoramica sembrano essere corretti.

Come posso correggere i numeri nella panoramica?

Siamo sulla versione corrente 2.6.0.beta5 ( 698b7ace10 ), ma probabilmente questo problema era presente anche nelle versioni precedenti.

I numeri vengono corretti regolarmente; in alcuni casi rari possono andare fuori sincrono.

Se attendi fino a 12 ore, il problema si risolve automaticamente.

Sidekiq funziona correttamente nella tua installazione? Hai recentemente eliminato un gran numero di utenti?

Bene, anche dopo 12 ore sono ancora errati: tutti i valori dal livello di fiducia 0 al livello di fiducia 4 sono stati ridotti solo di 2 (per un motivo qualsiasi). Tutti gli altri contatori dei gruppi sembrano corretti.

No, l’ultimo utente eliminato era stato cancellato già due giorni fa.
Negli ultimi 14 giorni ho eliminato solo 7 utenti.
Negli ultimi 1,5 anni ho eliminato oltre 2000 utenti. Abbiamo installato il plugin autosupend e sospendiamo automaticamente gli utenti inattivi da oltre 365 giorni. Questi utenti sospesi automaticamente e tutti i loro dati vengono poi eliminati almeno una volta a settimana, così da rimanere conformi al GDPR dell’UE.

Sidekick funziona correttamente, non ci sono job bloccati.
Per quanto ricordo, il numero di job che hanno generato errori non è cambiato negli ultimi giorni.
A cosa serve la coda 0f13eb003564dea87a7cc8f25560ba0e?
È necessaria o dovrei eliminarla?

Penso di aver trovato il problema: la tabella group_users contiene ancora voci per user_id che non esistono più e che non sono più presenti nella tabella users (in totale 182 voci per 117 user_id che non hanno una voce corrispondente in users).
Quindi, in qualche modo, il database presenta delle inconsistenze. Non so come sia successo.
Ora la domanda è: come posso risolvere la situazione?
Devo eliminare manualmente, tramite un’istruzione SQL, le voci da group_users per le quali non esiste una corrispondenza in users?

Sì, non ho idea di come tu sia arrivato a quello stato, forse è il risultato di una migrazione o qualcosa del genere?

L’eliminazione è perfettamente sicura (anche se, come per tutte le cose di questo tipo, esegui un backup del tuo database prima).

./launcher enter app
rails c
DB.exec("delete from group_users where user_id not in (select id from users)")

Se riesci a trovare una riproduzione coerente qui, mi farebbe molto piacere correggerlo.

Grazie per la risposta, ho appena eseguito l’eliminazione e controllerò di nuovo una volta completati i prossimi aggiornamenti della panoramica.

Sembra tutto a posto ora, caso chiuso.