Údržba idempotency klíčů
Údržba tabulky idempotency klíčů
Každý JSON-RPC požadavek, který nese pole idempotencyKey,
je zaznamenán do tabulky pgarachne.requests funkcí
pgarachne.save_idempotency_key(). Právě díky tomu funguje
detekce duplicit — ale bez pravidelného úklidu tabulka neomezeně roste.
PgArachne samo o sobě neplánuje žádné úlohy na pozadí. Nejčistší možnosti jsou:
pg_cron (doporučeno, pokud můžete instalovat rozšíření)
-- Každou hodinu smaž klíče starší než 24 hodin
SELECT cron.schedule(
'pgarachne-idempotency-cleanup',
'0 * * * *',
$$SELECT pgarachne.cleanup_idempotency_keys('24 hours'::interval);$$
);Externí cron/systemd timer
Naplánujte shell job, který zavolá funkci přes psql:
0 * * * * psql "host=... user=... dbname=..." \
-c "SELECT pgarachne.cleanup_idempotency_keys('24 hours'::interval);" \
>> /var/log/pgarachne-cleanup.log 2>&1Manuálně/ad-hoc
Funkci můžete kdykoli zavolat z psql, migračního skriptu nebo libovolného klienta. Vrací počet smazaných řádků.
SELECT pgarachne.cleanup_idempotency_keys(); -- výchozí: 24 hodin
SELECT pgarachne.cleanup_idempotency_keys('7 days'::interval);Volba retenčního okna
Zvolte okno s dostatečnou rezervou nad nejdelším očekávaným retry intervalem vašich klientů. Pokud chybový klient opakuje stejný idempotency klíč 48 hodin po prvním požadavku, 24hodinové okno duplicitu nezachytí a požadavek bude zpracován znovu.
Pro většinu nasazení je 24 hodin bezpečný výchozí bod.