cinder/cinder/volume
Fernando Ferraz f70bfbf711 NetApp SolidFire: Fix duplicate volume when API response is lost
The SolidFire driver retries API requests in case a connection
error occurrs. When network is unstable, there may be the
possibility that the SolidFire backend successfully receive
and process a create volume operation, but fail to deliver the
response back to the driver.

When this scenario occurrs, the SolidFire driver automatically
resends the request, creating a second volume and leaving a
duplicate unused. Although this doesn't affect
driver functionality at first moment (the volume id from the
cluster is always correctly associated to cinder provider id),
further operations may hit the unused volume, leading to
unexpected hehavior.

This patch fixes this issue by:

1. Checking if the volume name already exists in the
backend before trying to create it. Volume creation will
raise a exception and abort in case of a volume is found.

2. Checking for volume creation right after a read timeout is
detected, preventing invalid API calls.

3. Adding option ´sf_volume_create_timeout´ to the SolidFire
driver, to allow users to set the appropriate timeout value for
their environment.

Closes-Bug: #1896112
Change-Id: I4383b691a8cc4aacb046332e418aafb88ba8ba56
(cherry picked from commit 42c92cc407)
(cherry picked from commit deb31a0c4d)
(cherry picked from commit d73da73283)
2021-03-24 22:43:30 +00:00
..
drivers NetApp SolidFire: Fix duplicate volume when API response is lost 2021-03-24 22:43:30 +00:00
flows Fix volume rekey during clone 2020-12-03 10:07:53 -05:00
targets Merge "target/spdknvmf: Add max_queue_depth configuration parameter" 2019-09-18 09:03:09 +00:00
__init__.py
api.py Fix: listing volumes with filters 2021-01-12 11:57:46 +00:00
configuration.py Add support for shared "backend_defaults" config 2017-07-11 18:58:58 +00:00
driver.py HPE 3PAR: Support duplicated FQDN in network 2020-07-02 03:28:20 -07:00
driver_utils.py Remove log translations 2017-03-19 14:59:57 +00:00
group_types.py handle no default_cgsnapshot_type 2017-11-28 21:55:29 +00:00
manager.py Make volume soft delete more thorough 2020-01-14 12:29:00 +00:00
qos_specs.py [Doc] Handle Sphinx warnings as errors 2017-08-29 16:00:09 -05:00
rpcapi.py Rename volume/utils.py to volume/volume_utils.py 2019-09-09 15:00:07 -04:00
throttling.py Implement privsep boilerplate in cinder. 2018-06-06 09:42:54 +08:00
volume_migration.py Initiating Cinder Volume Manager with large number of volumes 2019-01-11 08:19:07 -05:00
volume_types.py Modify default/delete volume type logic 2020-09-21 11:08:49 +00:00
volume_utils.py Fix rekeying volume with legacy encryption provider 2020-08-27 09:47:51 -07:00