@Andrey you're right, I think the sleep would have to be in ceph. @James Yes we might be able to do something like:
diff --git a/cinder/volume/drivers/rbd.py b/cinder/volume/drivers/rbd.py index 5b868e4fe..d0b556a94 100644 --- a/cinder/volume/drivers/rbd.py +++ b/cinder/volume/drivers/rbd.py @@ -1594,6 +1594,9 @@ class RBDDriver(driver.CloneableImageVD, driver.MigrateVD, finally: fileutils.delete_if_exists(dest_image_path)
+ @utils.retry(exception.VolumeIsBusy, + self.configuration.rados_connection_interval, + self.configuration.rados_connection_retries) def _copy_image_to_volume(self, context, volume, image_service, image_id, encrypted=False):
@Andrey you're right, I think the sleep would have to be in ceph. @James Yes we might be able to do something like:
diff --git a/cinder/ volume/ drivers/ rbd.py b/cinder/ volume/ drivers/ rbd.py .d0b556a94 100644 volume/ drivers/ rbd.py volume/ drivers/ rbd.py driver. CloneableImageV D, driver.MigrateVD,
finally:
fileutils. delete_ if_exists( dest_image_ path)
index 5b868e4fe.
--- a/cinder/
+++ b/cinder/
@@ -1594,6 +1594,9 @@ class RBDDriver(
+ @utils. retry(exception .VolumeIsBusy, ion.rados_ connection_ interval, ion.rados_ connection_ retries) to_volume( self, context, volume, image_service, image_id,
encrypted= False):
+ self.configurat
+ self.configurat
def _copy_image_