rwadurian/backend/mpc-system/services
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
..
account feat(mpc-system): add event sourcing for session tracking 2025-12-05 23:31:04 -08:00
message-router fix(proto): add party_index to JoinSessionResponse for correct index assignment 2025-12-06 00:08:47 -08:00
server-party fix(server-party): include self in participants list for keygen 2025-12-06 00:01:14 -08:00
server-party-api feat(mpc-system): add signing parties configuration and delegate signing support 2025-12-05 22:47:55 -08:00
session-coordinator feat(mpc-system): implement optimistic locking for session updates 2025-12-06 04:16:32 -08:00