From 96d6869dd60c90231ad32426c7cd165cf670e61b Mon Sep 17 00:00:00 2001 From: silvacarloss Date: Tue, 19 Feb 2019 15:20:48 -0300 Subject: [PATCH] [NetApp] Fix race condition issue in NetApp driver This patch fixes the concurrency in the NetApp driver between the method setup_server and teardown_server by doing the teardown_server method lock the needed resources correctly. Closes-bug: #1816640 Change-Id: I7d56384e77b7e18b3c95f182c0a01af82e5fa5a5 --- .../netapp/dataontap/cluster_mode/lib_multi_svm.py | 8 ++++++-- .../notes/fix-race-condition-netapp-5a36f6ba95a49c5e.yaml | 6 ++++++ 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 releasenotes/notes/fix-race-condition-netapp-5a36f6ba95a49c5e.yaml diff --git a/manila/share/drivers/netapp/dataontap/cluster_mode/lib_multi_svm.py b/manila/share/drivers/netapp/dataontap/cluster_mode/lib_multi_svm.py index 188e6d6ba1..7266767f61 100644 --- a/manila/share/drivers/netapp/dataontap/cluster_mode/lib_multi_svm.py +++ b/manila/share/drivers/netapp/dataontap/cluster_mode/lib_multi_svm.py @@ -363,9 +363,13 @@ class NetAppCmodeMultiSVMFileStorageLibrary( interfaces_on_vlans.append(interface) vlans.append(interface['home-port']) - vlans = '-'.join(sorted(set(vlans))) if vlans else None + if vlans: + vlans = '-'.join(sorted(set(vlans))) if vlans else None + vlan_id = vlans.split('-')[-1] + else: + vlan_id = None - @utils.synchronized('netapp-VLANs-%s' % vlans, external=True) + @utils.synchronized('netapp-VLAN-%s' % vlan_id, external=True) def _delete_vserver_with_lock(): self._client.delete_vserver(vserver, vserver_client, diff --git a/releasenotes/notes/fix-race-condition-netapp-5a36f6ba95a49c5e.yaml b/releasenotes/notes/fix-race-condition-netapp-5a36f6ba95a49c5e.yaml new file mode 100644 index 0000000000..17d6c39660 --- /dev/null +++ b/releasenotes/notes/fix-race-condition-netapp-5a36f6ba95a49c5e.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + Fixed an issue with the NetApp driver leaving leftover + resources when it was handling too many share server + creation and deletion requests in parallel.