rwadurian/backend/mpc-system/migrations
hailin b72268c1ce feat(mpc-system): implement optimistic locking for session updates
Implement version-based optimistic locking to prevent concurrent update conflicts
when multiple parties simultaneously report completion during keygen operations.

Changes:
- Add version column to mpc_sessions table (migration 004)
- Add Version field to MPCSession entity
- Define ErrOptimisticLockConflict error
- Update SessionPostgresRepo.Update() to check version and increment on success
- Add automatic retry logic (max 3 attempts) to ReportCompletionUseCase
- Update Save and all query methods (FindByStatus, FindExpired, etc.) to handle version field

This replaces pessimistic locking (FOR UPDATE) with optimistic locking using
the industry-standard pattern: WHERE version = $n and checking rowsAffected.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-06 04:16:32 -08:00
..
001_init_schema.up.sql refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
002_add_signing_parties.down.sql feat(mpc-system): add signing parties configuration and delegate signing support 2025-12-05 22:47:55 -08:00
002_add_signing_parties.up.sql feat(mpc-system): add signing parties configuration and delegate signing support 2025-12-05 22:47:55 -08:00
003_add_session_events.down.sql feat(mpc-system): add event sourcing for session tracking 2025-12-05 23:31:04 -08:00
003_add_session_events.up.sql feat(mpc-system): add event sourcing for session tracking 2025-12-05 23:31:04 -08:00
004_add_optimistic_locking.down.sql feat(mpc-system): implement optimistic locking for session updates 2025-12-06 04:16:32 -08:00
004_add_optimistic_locking.up.sql feat(mpc-system): implement optimistic locking for session updates 2025-12-06 04:16:32 -08:00