Issue #8637
closed
Issue #8912: [EPIC] Issues with the traditional tasking system
Possible race condition where task's reservations get deleted
Status:
CLOSED - CURRENTRELEASE
- Related to Issue #8603: possible tasking race condition: update or delete on table "core_reservedresource" violates foreign key constraint "core_taskreservedres_resource_id_ee0b7c62_fk_core_rese" on table "core_taskreservedresource" added
- Description updated (diff)
- Related to Issue #8568: Overall task status remains in 'running' state while all the reports are in the final state added
- Triaged changed from No to Yes
- Sprint set to Sprint 95
- Sprint changed from Sprint 95 to Sprint 96
- Sprint changed from Sprint 96 to Sprint 97
- Priority changed from Normal to High
- Severity changed from 2. Medium to 3. High
- Sprint changed from Sprint 97 to Sprint 98
Is the cascaded delete needed or even useful here?
Isn't the cleanup process, that the association (TaskReservedResource) is deleted first and the then the ReservedResource is cleaned up if no longer needed? If we change the cascade to protect here, it should be fine, right? And if another task is assigned to the Resource in the meantime, we get a ConsistencyException we can simply ignore.
Yup, that's my thinking as well.
I want to confirm the thinking here. When you say "the cleanup process, that the association (TaskReservedResource) is deleted first and the then the ReservedResource is cleaned up " you mean here right?.
If that's the case then I agree the cascade delete isn't needed. So say we got rid of the cascade delete ... couldn't this race condition still happen just between these two lines?.
bmbouter wrote:
I want to confirm the thinking here. When you say "the cleanup process, that the association (TaskReservedResource) is deleted first and the then the ReservedResource is cleaned up " you mean here right?.
If that's the case then I agree the cascade delete isn't needed. So say we got rid of the cascade delete ... couldn't this race condition still happen just between these two lines?.
If you go back to my example, then when task 1 goes to clean up the ReservedResource, then a cascade protect from task 2 will prevent the ReservedResource from being deleted. This would avoid the race condition.
- Sprint changed from Sprint 98 to Sprint 99
Ah this does make sense @david. +1 to this plan, let's change this line to PROTECT.
- Status changed from NEW to ASSIGNED
- Assignee set to daviddavis
- Status changed from ASSIGNED to POST
- Parent issue set to #8912
- Status changed from POST to MODIFIED
- Sprint/Milestone set to 3.14.0
- Status changed from MODIFIED to CLOSED - CURRENTRELEASE
Also available in: Atom
PDF
Fix race condition during reserved resource cleanup
fixes #8637