Skip to main content

Failure Modes

:::info Source Sourced from services/enrollment-service/FAILURE_MODES.md in the documentation repo. :::

1. Scenarios​

1.1 Duplicate license.granted Event​

  • Idempotent on (tenantId, userId, courseId, source.ref).

1.2 Course Version Withdrawn Between Grant and Enrollment​

  • Validation at creation: fail with enrollment.course_version.withdrawn; triggers marketplace saga compensation.

1.3 License Revoked During Active Session​

  • Revoke enrollment; content-service unmounts bundle; learner sees friendly error.

1.4 Expiration Job Stuck​

  • Nightly scheduler; alert if no runs in 24h.

1.5 Bulk Create Partial Failure​

  • Async with per-row result; continue-on-error mode for admins.

1.6 GDPR Erase Race (user playing)​

  • Grace: end current session; mark enrollment for deletion at session end.

2. Retry / Backoff​

OpMaxBackoff
Postgres310ms–200ms
Outboxinfiniteexp cap 5m

3. Circuit Breakers​

None external critical.

4. Fallbacks​

PrimaryFallback
Real-time createQueue (worker picks up)

5. Chaos​

  • Duplicate events → single state.
  • Kill worker → resume on restart.