shoc-backend/SeaHaven.DataServices
Alexandre Brandizzi c02749a4ea fix: run work order edit reschedule under the mutation lock
UpdateWorkOrderAsync loaded the work order, applied the shared schedule
side effects (RescheduleCount, OriginalDate/OriginalWeek, lifecycle,
IsAddOn) and saved with no gate, transaction or row lock, so a
concurrent reschedule could interleave with the read-modify-write.

The read, the mutation, the save and the audit entry now run through
IWorkOrderDataService.ExecuteWorkOrderMutationAsync, which uses the
shared WorkOrderMutationLock: the per-work-order in-process gate, a
transaction, and an UPDLOCK on the work order row on SQL Server. A
reschedule committed by another holder of the lock is read before the
edit applies its own date and increments RescheduleCount.

Adds a regression test that holds the gate, commits a reschedule, and
asserts the edit waits and then builds on the committed schedule.
2026-10-01 00:19:37 -03:00
..
DependencyInjection backend changes 2026-05-14 11:00:12 -05:00
Dto feat(team-members): invite registration with emailed code confirmation (SH-385) 2026-09-25 11:49:10 -03:00
Exceptions fix: map concurrent uplift inserts to conflict 2026-09-23 01:26:15 -03:00
Helpers fix(workorders): search registry service labels 2026-09-30 20:19:41 -03:00
Implementation fix: run work order edit reschedule under the mutation lock 2026-10-01 00:19:37 -03:00
Interfaces fix: run work order edit reschedule under the mutation lock 2026-10-01 00:19:37 -03:00
Models feat(notifications): SEV response-window alerts and breach acknowledgement 2026-09-25 11:16:21 -03:00
Properties fix: distinguish uplift request key conflicts 2026-09-23 01:39:16 -03:00
SeaHaven.DataServices.csproj refactor 2026-04-28 18:55:14 -05:00