Idempotency Key Cleanup
Idempotency Key Cleanup
Jeder JSON-RPC-Request mit einem idempotencyKey-Feld wird
von der Funktion pgarachne.save_idempotency_key() in der Tabelle
pgarachne.requests gespeichert. Das ist die Grundlage für die
Duplikaterkennung — es bedeutet aber auch, dass die Tabelle unbegrenzt wächst,
wenn nicht regelmäßig ein Cleanup durchgeführt wird.
PgArachne führt selbst keinen Hintergrund-Scheduler aus. Die saubersten Optionen:
pg_cron (empfohlen, falls Sie Extensions installieren können)
-- Run every hour, remove keys older than 24 hours
SELECT cron.schedule(
'pgarachne-idempotency-cleanup',
'0 * * * *',
$$SELECT pgarachne.cleanup_idempotency_keys('24 hours'::interval);$$
);Externer Cron/systemd-Timer
Planen Sie einen Shell-Job, der die Funktion über psql aufruft:
0 * * * * psql "host=... user=... dbname=..." \
-c "SELECT pgarachne.cleanup_idempotency_keys('24 hours'::interval);" \
>> /var/log/pgarachne-cleanup.log 2>&1Manuell/ad-hoc
Sie können die Funktion jederzeit über psql, ein Migrationsskript oder einen anderen Client aufrufen. Sie gibt die Anzahl der gelöschten Zeilen zurück.
SELECT pgarachne.cleanup_idempotency_keys(); -- default: 24 hours
SELECT pgarachne.cleanup_idempotency_keys('7 days'::interval);Retention-Fenster wählen
Wählen Sie ein Fenster, das deutlich länger ist als das längste zu erwartende Retry-Intervall Ihrer Clients. Wenn ein fehlerhafter Client denselben Idempotency Key 48 Stunden nach dem ursprünglichen Request erneut sendet, lässt ein 24-Stunden-Retention-Fenster das Duplikat unbemerkt durch.
Für die meisten Deployments sind 24 Stunden ein sicherer Standardwert.