Area
Notification Service / Reliability
Complexity
Medium
File(s)
notification-service/src/listener.ts (fetchEvents, lines ~109-120)
Problem
server.getEvents is called with pagination: { limit: 100 } and only the single returned page is consumed — there's no loop over a cursor/response.cursor for additional pages. If more than 100 ScoreChanged events occur within one poll window (e.g. after downtime, a backfill, or a busy period), events beyond the first 100 are never fetched, yet poll() still advances the cursor to latestLedger.sequence. Those events are gone permanently, not just delayed.
Scope
In:
- Loop getEvents calls until all pages for the range are consumed before returning from fetchEvents.
Out:
- Rate-limiting/backpressure for pathologically large backlogs.
Acceptance Criteria
Area
Notification Service / Reliability
Complexity
Medium
File(s)
notification-service/src/listener.ts (fetchEvents, lines ~109-120)
Problem
server.getEvents is called with pagination: { limit: 100 } and only the single returned page is consumed — there's no loop over a cursor/response.cursor for additional pages. If more than 100 ScoreChanged events occur within one poll window (e.g. after downtime, a backfill, or a busy period), events beyond the first 100 are never fetched, yet poll() still advances the cursor to latestLedger.sequence. Those events are gone permanently, not just delayed.
Scope
In:
Out:
Acceptance Criteria