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     : yahoo-eng-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to