Recupero Tracce dalla Dead Letter Queue

Quando il processo di failover del tracciamento su database non riesce a riversare le tracce nel database dopo il numero massimo di tentativi configurati (default: 10), queste vengono automaticamente spostate in una directory speciale chiamata Dead Letter Queue (DLQ).

Struttura Directory DLQ

La directory DLQ si trova all’interno della directory di failover configurata (default: /var/govway/resources) con la struttura /var/govway/resources/TIPO/dlq/, dove TIPO può essere: transazioni, diagnostici, messaggi, o altri tipi di informazioni tracciabili.

Verifica Presenza Tracce in DLQ

Per verificare se sono presenti tracce in DLQ:

# Conta tutti i file presenti nelle directory DLQ
find /var/govway/resources/*/dlq/ -type f ! -name "*README" | wc -l

# Lista le directory DLQ con tracce presenti
for dir in /var/govway/resources/*/dlq/; do
    count=$(find "$dir" -type f ! -name "*README" 2>/dev/null | wc -l)
    [ $count -gt 0 ] && echo "$(basename $(dirname $dir)): $count file"
done

Recupero Manuale delle Tracce

Una volta risolto il problema che impediva la registrazione nel database, è possibile recuperare manualmente le tracce spostate in DLQ.

Avvertimento

Prima di procedere, verificare che:

  • Il database sia nuovamente disponibile e funzionante

  • Il timer di failover sia attivo (se presente la proprietà “org.openspcoop2.pdd.resources.fileSystemRecovery.enabled” in govway_local.properties deve essere valorizzata a “true”)

Procedura di Recupero

  1. Rimuovere i file README da tutte le directory DLQ:

    find /var/log/govway/resources/*/dlq/ -name "*README" -delete
    
  2. Spostare tutte le tracce dalla DLQ alle directory di recovery:

    for tipo_dir in /var/log/govway/resources/*/; do
        tipo=$(basename "$tipo_dir")
        [ -d "${tipo_dir}dlq" ] && find "${tipo_dir}dlq/*/" -type f -exec mv {} "${tipo_dir}" \; 2>/dev/null
    done
    
  3. Rimuovere le directory vuote:

    rmdir /var/log/govway/resources/*/dlq/*/ 2>/dev/null
    

Il timer di failover rileverà i file spostati e tenterà di riversarli nel database al prossimo ciclo (default: ogni 5 minuti).