yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #68516
[Bug 1416000] Re: VMware: write error lost while transferring volume
This has been fixed in Nova as part of the image transfer refactoring long time ago:
https://github.com/openstack/nova/commit/2df83abaa0a5c828421fc38602cc1e5145b46ff4
** Changed in: nova
Status: Confirmed => Fix Released
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1416000
Title:
VMware: write error lost while transferring volume
Status in OpenStack Compute (nova):
Fix Released
Status in oslo.vmware:
Confirmed
Bug description:
I'm running the following command:
cinder create --image-id a24f216f-9746-418e-97f9-aebd7fa0e25f 1
The write side of the data transfer (a VMwareHTTPWriteFile object)
returns an error in write() which I haven't debugged, yet. However,
this error is never reported to the user, although it does show up in
the logs. The effect is that the transfer sits in the 'downloading'
state until the 7200 second timeout, when it reports the timeout.
The reason is that the code which waits on transfer completion (in
start_transfer) does:
try:
# Wait on the read and write events to signal their end
read_event.wait()
write_event.wait()
except (timeout.Timeout, Exception) as exc:
...
That is, it waits for the read thread to signal completion via
read_event before checking write_event. However, because write_thread
has died, read_thread is blocking and will never signal completion.
You can demonstrate this by swapping the order. If you want for write
first it will die immediately, which is what you want. However, that's
not right either because now you're missing read errors.
Ideally this code needs to be able to notice an error at either end
and stop immediately.
To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1416000/+subscriptions