Skip to content

Add resilient reminder retry monitoring#1042

Open
szyunlin wants to merge 1 commit into
rohitdash08:mainfrom
szyunlin:bounty-130-reminder-retry-monitoring
Open

Add resilient reminder retry monitoring#1042
szyunlin wants to merge 1 commit into
rohitdash08:mainfrom
szyunlin:bounty-130-reminder-retry-monitoring

Conversation

@szyunlin
Copy link
Copy Markdown

Summary

Implements resilient reminder background-job retry and monitoring for #130.

  • Adds persisted retry state to reminders: retry count, max retries, next retry time, last attempt, last error, and failed/dead-letter state.
  • Updates /reminders/run so one provider failure no longer blocks other due reminders. Successful reminders are marked sent, transient failures are scheduled with bounded 5/15/45 minute backoff, and exhausted jobs move to a failed state.
  • Adds /reminders/jobs for retry/dead-letter monitoring and POST /reminders/{id}/retry for manual reset.
  • Updates PostgreSQL schema, OpenAPI docs, README notes, and backend coverage.

Verification

  • sh ./scripts/test-backend.sh tests/test_reminders.py passed: 4 tests.
  • sh ./scripts/test-backend.sh passed: 24 tests.
  • docker compose run --rm backend sh -lc "black --check app tests && flake8 app tests" passed.

/claim #130

@szyunlin
Copy link
Copy Markdown
Author

Verification update for #130:

  • Focused reminder tests passed locally: sh ./scripts/test-backend.sh tests/test_reminders.py -> 4 passed.
  • Full backend suite passed locally: sh ./scripts/test-backend.sh -> 24 passed.
  • Formatting/lint passed locally: black --check app tests && flake8 app tests.

The implementation keeps the existing reminder flow, adds persisted retry/dead-letter state, exposes /reminders/jobs monitoring, and provides POST /reminders/{id}/retry for manual recovery.

@szyunlin
Copy link
Copy Markdown
Author

Short demo recording for #130: https://asciinema.org/a/z9lb8UXrBvML7I77

It shows the committed change summary and the focused reminder retry tests passing (4 passed).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant