Public bug reported:
Description
===========
Subsequent nova-api requests for attachment of different volumes to the same VM
are blocking and waiting for the previous attach action to be finished and
"in-use" state. In my opinion, this is unnecessary and can lead to timeouting
errors. Observed on Openstack Rocky.
Steps to reproduce
==================
Preconditions:
- cinder configured with a backend storage, best if a HW storage is used where
the attach action takes considerable time - say >10s
- 1 VM ("vm")
- 2 volumes ("vol1", "vol2")
Actions:
1.
$ openstack server add volume vm vol1
-> is accepted immediately by nova-api
2. immediately after (1.), when the vol1 is being attached, run
$ openstack server add volume vm vol2
-> this openstack command (aka nova-api call) blocks and does not return until
the volume attach command in (1.) is completed and vol1 is "in-use" state.
Expected result
===============
Step (2.) should be immediately accepted and handled asychronously. I don't see
a reason why step (2.) should wait until volume from step (1.) is "in-use"
Logs
====
In cases, when the attachment of (1.) takes more than 60s, it leads to an error
of (2.) with following messaging timeout, which also exposes where the call
waits - obviously reserve_block_device_name to a compute node :
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi
[req-44c4d473-9916-4d73-82d6-0115a1305f2a 0b5290e72cf546cb9e1921d81abb303c
b21f6c73cba24a4280156f1d3b77af98 - default default] Unexpected exception in API
method: MessagingTimeout:
Timed out waiting for a reply to message ID 3af45090624b4fa29425e6fc05f41149
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi Traceback (most recent
call last):
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/nova/api/openstack/wsgi.py", line 801, in
wrapped
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi return f(*args,
**kwargs)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/nova/api/validation/__init__.py", line 110,
in wrapper
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi return func(*args,
**kwargs)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/nova/api/validation/__init__.py", line 110,
in wrapper
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi return func(*args,
**kwargs)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/nova/api/openstack/compute/volumes.py", line
336, in create
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi
supports_multiattach=supports_multiattach)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/nova/compute/api.py", line 205, in inner
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi return
function(self, context, instance, *args, **kwargs)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/nova/compute/api.py", line 153, in inner
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi return f(self,
context, instance, *args, **kw)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/nova/compute/api.py", line 4172, in
attach_volume
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi
supports_multiattach=supports_multiattach)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/nova/compute/api.py", line 4047, in
_attach_volume
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi
device_type=device_type, tag=tag)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/nova/compute/api.py", line 3958, in
_create_volume_bdm
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi
multiattach=volume['multiattach'])
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/nova/compute/rpcapi.py", line 897, in
reserve_block_device_name
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi return
cctxt.call(ctxt, 'reserve_block_device_name', **kw)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/oslo_messaging/rpc/client.py", line 179, in
call
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi retry=self.retry)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/oslo_messaging/transport.py", line 133, in
_send
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi retry=retry)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/oslo_messaging/_drivers/amqpdriver.py", line
645, in send
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi
call_monitor_timeout, retry=retry)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/oslo_messaging/_drivers/amqpdriver.py", line
634, in _send
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi
call_monitor_timeout)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/oslo_messaging/_drivers/amqpdriver.py", line
520, in wait
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi message =
self.waiters.get(msg_id, timeout=timeout)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/oslo_messaging/_drivers/amqpdriver.py", line
397, in get
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi 'to message ID %s'
% msg_id)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi MessagingTimeout:
Timed out waiting for a reply to message ID 3af45090624b4fa29425e6fc05f41149
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi
** Affects: nova
Importance: Undecided
Status: New
--
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/1862375
Title:
Subsequent nova-api volume attach request waiting for previous one to
complete
Status in OpenStack Compute (nova):
New
Bug description:
Description
===========
Subsequent nova-api requests for attachment of different volumes to the same
VM are blocking and waiting for the previous attach action to be finished and
"in-use" state. In my opinion, this is unnecessary and can lead to timeouting
errors. Observed on Openstack Rocky.
Steps to reproduce
==================
Preconditions:
- cinder configured with a backend storage, best if a HW storage is used
where the attach action takes considerable time - say >10s
- 1 VM ("vm")
- 2 volumes ("vol1", "vol2")
Actions:
1.
$ openstack server add volume vm vol1
-> is accepted immediately by nova-api
2. immediately after (1.), when the vol1 is being attached, run
$ openstack server add volume vm vol2
-> this openstack command (aka nova-api call) blocks and does not return
until the volume attach command in (1.) is completed and vol1 is "in-use" state.
Expected result
===============
Step (2.) should be immediately accepted and handled asychronously. I don't
see a reason why step (2.) should wait until volume from step (1.) is "in-use"
Logs
====
In cases, when the attachment of (1.) takes more than 60s, it leads to an
error of (2.) with following messaging timeout, which also exposes where the
call waits - obviously reserve_block_device_name to a compute node :
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi
[req-44c4d473-9916-4d73-82d6-0115a1305f2a 0b5290e72cf546cb9e1921d81abb303c
b21f6c73cba24a4280156f1d3b77af98 - default default] Unexpected exception in API
method: MessagingTimeout:
Timed out waiting for a reply to message ID 3af45090624b4fa29425e6fc05f41149
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi Traceback (most
recent call last):
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/nova/api/openstack/wsgi.py", line 801, in
wrapped
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi return f(*args,
**kwargs)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/nova/api/validation/__init__.py", line 110,
in wrapper
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi return
func(*args, **kwargs)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/nova/api/validation/__init__.py", line 110,
in wrapper
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi return
func(*args, **kwargs)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/nova/api/openstack/compute/volumes.py", line
336, in create
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi
supports_multiattach=supports_multiattach)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/nova/compute/api.py", line 205, in inner
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi return
function(self, context, instance, *args, **kwargs)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/nova/compute/api.py", line 153, in inner
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi return f(self,
context, instance, *args, **kw)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/nova/compute/api.py", line 4172, in
attach_volume
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi
supports_multiattach=supports_multiattach)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/nova/compute/api.py", line 4047, in
_attach_volume
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi
device_type=device_type, tag=tag)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/nova/compute/api.py", line 3958, in
_create_volume_bdm
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi
multiattach=volume['multiattach'])
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/nova/compute/rpcapi.py", line 897, in
reserve_block_device_name
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi return
cctxt.call(ctxt, 'reserve_block_device_name', **kw)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/oslo_messaging/rpc/client.py", line 179, in
call
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi retry=self.retry)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/oslo_messaging/transport.py", line 133, in
_send
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi retry=retry)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/oslo_messaging/_drivers/amqpdriver.py", line
645, in send
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi
call_monitor_timeout, retry=retry)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/oslo_messaging/_drivers/amqpdriver.py", line
634, in _send
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi
call_monitor_timeout)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/oslo_messaging/_drivers/amqpdriver.py", line
520, in wait
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi message =
self.waiters.get(msg_id, timeout=timeout)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi File
"/usr/lib/python2.7/site-packages/oslo_messaging/_drivers/amqpdriver.py", line
397, in get
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi 'to message ID
%s' % msg_id)
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi MessagingTimeout:
Timed out waiting for a reply to message ID 3af45090624b4fa29425e6fc05f41149
2020-02-06 02:03:14.744 30 ERROR nova.api.openstack.wsgi
To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1862375/+subscriptions
--
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to : [email protected]
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help : https://help.launchpad.net/ListHelp