Nettoyage des clés d’idempotence
Nettoyage des clés d’idempotence
Chaque requête JSON-RPC portant un champ idempotencyKey
est enregistrée dans la table pgarachne.requests par la
fonction pgarachne.save_idempotency_key(). C’est ce qui permet
la détection des doublons — mais cela signifie aussi que la table grossit
indéfiniment tant qu’un opérateur n’exécute pas un nettoyage périodique.
PgArachne n’exécute pas lui-même de planificateur en arrière-plan. Les options les plus adaptées :
pg_cron (recommandé si vous pouvez installer des extensions)
-- Run every hour, remove keys older than 24 hours
SELECT cron.schedule(
'pgarachne-idempotency-cleanup',
'0 * * * *',
$$SELECT pgarachne.cleanup_idempotency_keys('24 hours'::interval);$$
);Cron externe/timer systemd
Planifiez une tâche shell qui appelle la fonction via psql :
0 * * * * psql "host=... user=... dbname=..." \
-c "SELECT pgarachne.cleanup_idempotency_keys('24 hours'::interval);" \
>> /var/log/pgarachne-cleanup.log 2>&1Manuel/ponctuel
Vous pouvez appeler la fonction à tout moment depuis psql, un script de migration, ou tout autre client. Elle retourne le nombre de lignes supprimées.
SELECT pgarachne.cleanup_idempotency_keys(); -- default: 24 hours
SELECT pgarachne.cleanup_idempotency_keys('7 days'::interval);Choisir une fenêtre de rétention
Choisissez une fenêtre confortablement plus longue que le plus long intervalle de nouvelle tentative attendu pour vos clients. Si un client défectueux retente la même clé d’idempotence 48 heures après la requête d’origine, une fenêtre de rétention de 24 heures laissera silencieusement passer le doublon.
Pour la plupart des déploiements, 24 heures constitue une valeur par défaut sûre.