Telegram (ask questions / claim the issue here first): https://t.me/+DOylgFv1jyJlNzM0
Why this matters
src/services/eventIndexer.ts persists last_indexed_ledger but two instances can both read the same cursor and fetch the same range; only the ON CONFLICT DO NOTHING insert prevents duplicate rows, wasting RPC calls and risking duplicate webhook/notification dispatch which happen before the conflict is known.
Acceptance criteria
Files to touch
- src/services/eventIndexer.ts
- src/services/indexerManager.ts
Out of scope
- Switching off polling to streaming
- Reorganizing the indexer_state schema
Why this matters
src/services/eventIndexer.ts persists last_indexed_ledger but two instances can both read the same cursor and fetch the same range; only the ON CONFLICT DO NOTHING insert prevents duplicate rows, wasting RPC calls and risking duplicate webhook/notification dispatch which happen before the conflict is known.
Acceptance criteria
Files to touch
Out of scope