Issuing v2 replication commands against a non-replicated volume type puts replication_status into an unrecoverable state
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Cinder |
Fix Released
|
High
|
John Griffith |
Bug Description
The v2 replication commands can currently be issued against non replicated type volumes. When this is done, replication_status gets stuck in an unrecoverable state.
For example, with enable_replication, the volume API puts the volume's replication_status in 'enabling' state, then calls the driver. If the driver detects the volume is not of replicated type, it can raise an exception and not actually do anything. At this point, replication_status is stuck in 'enabling' state. There needs to be a check that allows the driver to say the volume is not replicated so replication_status can be adjusted.
This can also happen if the volume is of replicated type and another error is thrown. In the above scenario, replication_status will be stuck at 'enabling'. Once the error is resolved, no replication commands can be run against said volume.
Changed in cinder: | |
status: | Fix Committed → Fix Released |
Unfortunately the initial V1 implementation here: /github. com/openstack/ cinder/ commit/ 1c8f49bfe9fe3ab d713e28922d5551 f71228624c
https:/
Sets the default volume object to replication_ status= disabled on volume create in the taskflow API. This is kind of confusing, there's no way to know is it disabled because "we disabled it" or is it just flat out not supported?
I think the fix here is to initialize this to None or perhaps "unsupported-type" or something like that.