From 00760ae25bc528c97769426b7a3914b91becf32a Mon Sep 17 00:00:00 2001 From: Pierre Riteau Date: Mon, 18 Feb 2019 17:50:54 +0000 Subject: [PATCH] Prevent leases from being deleted during event execution A user can request to delete a lease while it is changing state via event execution, which can trigger an error condition as on_end will attempt to delete the corresponding aggregate. This commit prevents a lease from being deleted while its start_lease or end_lease events are in progress. Change-Id: I73bde0219b6ea30d16564fd2507fd59d52cbfa6a Closes-Bug: #1791741 --- blazar/status.py | 8 ++++++-- .../prevent-delete-during-events-c206a8f0a116798c.yaml | 7 +++++++ 2 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 releasenotes/notes/prevent-delete-during-events-c206a8f0a116798c.yaml diff --git a/blazar/status.py b/blazar/status.py index 24783240..e8d549ee 100644 --- a/blazar/status.py +++ b/blazar/status.py @@ -307,8 +307,12 @@ COMBINATIONS = { }, LeaseStatus.DELETING: { 'reservation': ReservationStatus.ALL, - 'start_lease': EventStatus.ALL, - 'end_lease': EventStatus.ALL + 'start_lease': (EventStatus.UNDONE, + EventStatus.DONE, + EventStatus.ERROR), + 'end_lease': (EventStatus.UNDONE, + EventStatus.DONE, + EventStatus.ERROR) }, LeaseStatus.UPDATING: { 'reservation': ReservationStatus.ALL, diff --git a/releasenotes/notes/prevent-delete-during-events-c206a8f0a116798c.yaml b/releasenotes/notes/prevent-delete-during-events-c206a8f0a116798c.yaml new file mode 100644 index 00000000..50317a26 --- /dev/null +++ b/releasenotes/notes/prevent-delete-during-events-c206a8f0a116798c.yaml @@ -0,0 +1,7 @@ +--- +fixes: + - | + Blazar now prevents leases from being deleted while their start_lease or + end_lease events are in progress, to avoid concurrently accessing shared + objects. For more details, see `bug 1791741 + `_.