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> |
||
|---|---|---|
| .. | ||
| 001_init_schema.up.sql | ||
| 002_add_signing_parties.down.sql | ||
| 002_add_signing_parties.up.sql | ||
| 003_add_session_events.down.sql | ||
| 003_add_session_events.up.sql | ||
| 004_add_optimistic_locking.down.sql | ||
| 004_add_optimistic_locking.up.sql | ||