Browse Source

Backup manager: Synchronously call remove_export

Call the volume's rpcapi remove_export method with
a "call" instead of a "cast" when detaching volumes
in the backup manager.

This prevents _detach_volume() from returning before
the remove_export() has completed, which helps prevent
problems where remove_export() races against a
subsequent operation.

Closes-Bug: #1920237

Change-Id: I482c3d5520a7bbb9971942cdb4c4208052106d70
changes/88/781788/4
Eric Harney 4 months ago
committed by Brian Rosmaita
parent
commit
d6895f9d2a
  1. 2
      cinder/backup/manager.py
  2. 7
      cinder/volume/rpcapi.py
  3. 8
      releasenotes/notes/bug-1920237-backup-remove-export-race-941e2ab1f056e54c.yaml

2
cinder/backup/manager.py

@ -1068,7 +1068,7 @@ class BackupManager(manager.SchedulerDependentManager):
if not is_snapshot:
rpcapi.terminate_connection(ctxt, device, properties,
force=force)
rpcapi.remove_export(ctxt, device)
rpcapi.remove_export(ctxt, device, sync=True)
else:
rpcapi.terminate_connection_snapshot(ctxt, device,
properties, force=force)

7
cinder/volume/rpcapi.py

@ -231,9 +231,12 @@ class VolumeAPI(rpc.RPCAPI):
return cctxt.call(ctxt, 'terminate_connection', volume_id=volume['id'],
connector=connector, force=force)
def remove_export(self, ctxt, volume):
def remove_export(self, ctxt, volume, sync=False):
cctxt = self._get_cctxt(volume.service_topic_queue)
cctxt.cast(ctxt, 'remove_export', volume_id=volume['id'])
if sync:
cctxt.call(ctxt, 'remove_export', volume_id=volume.id)
else:
cctxt.cast(ctxt, 'remove_export', volume_id=volume.id)
def publish_service_capabilities(self, ctxt):
cctxt = self._get_cctxt(fanout=True)

8
releasenotes/notes/bug-1920237-backup-remove-export-race-941e2ab1f056e54c.yaml

@ -0,0 +1,8 @@
---
fixes:
- |
`Bug #1920237 <https://bugs.launchpad.net/cinder/+bug/1920237>`_: The
backup manager calls volume remove_export() but does not wait for it to
complete when detaching a volume after backup. This caused problems
when a subsequent operation started on that volume before it had fully
detached.
Loading…
Cancel
Save