← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1348097] [NEW] Metadata agent fails with RequestURITooLong

 

Public bug reported:

The issue is reproducible when project (tenant) contains more than 170
networks and all these networks plugged into a single router.

Steps to reproduce on devstack:
 * disable quotas
 * create networks and subnets inside tenant, plug them into the router:
for i in $(seq 1 170);
do
  neutron net-create "skynet_$i"
  neutron subnet-create --name "skysubnet_$i" "skynet_$i" "13.0.$i.0/24"
  neutron router-interface-add router1 "skysubnet_$i"
done
 * launch VM and plug into any network
 * from VM's VNC console do curl http://169.254.169.254/latest/meta-data/instance-id

Observed behavior:
 * the request fails with HTTP 500 error
 * stacktrace in logs of neutron metadata agent (q-meta screen):
    RequestURITooLong: An unknown exception occurred.

Stacktrace:
2014-07-24 08:54:58.465 ERROR neutron.agent.metadata.agent [-] Unexpected error.
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent Traceback (most recent call last):
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/neutron/neutron/agent/metadata/agent.py", line 128, in __call__
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     instance_id, tenant_id = self._get_instance_and_tenant_id(req)
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/neutron/neutron/agent/metadata/agent.py", line 192, in _get_instance_and_tenant_id
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     ports = self._get_ports(remote_address, network_id, router_id)
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/neutron/neutron/agent/metadata/agent.py", line 183, in _get_ports
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     return self._get_ports_for_remote_address(remote_address, networks)
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/neutron/neutron/common/utils.py", line 99, in __call__
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     return self._get_from_cache(target_self, *args, **kwargs)
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/neutron/neutron/common/utils.py", line 77, in _get_from_cache
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     item = self.func(target_self, *args, **kwargs)
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/neutron/neutron/agent/metadata/agent.py", line 163, in _get_ports_for_remote_address
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     return qclient.list_ports(
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/python-neutronclient/neutronclient/v2_0/client.py", line 101, in with_params
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     ret = self.function(instance, *args, **kwargs)
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/python-neutronclient/neutronclient/v2_0/client.py", line 308, in list_ports
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     **_params)
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/python-neutronclient/neutronclient/v2_0/client.py", line 1329, in list
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     for r in self._pagination(collection, path, **params):
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/python-neutronclient/neutronclient/v2_0/client.py", line 1342, in _pagination
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     res = self.get(path, params=params)
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/python-neutronclient/neutronclient/v2_0/client.py", line 1315, in get
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     headers=headers, params=params)
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/python-neutronclient/neutronclient/v2_0/client.py", line 1300, in retry_request
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     headers=headers, params=params)
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/python-neutronclient/neutronclient/v2_0/client.py", line 1228, in do_request
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     self._check_uri_length(action)
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/python-neutronclient/neutronclient/v2_0/client.py", line 1217, in _check_uri_length
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     excess=uri_len - self.MAX_URI_LEN)
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent RequestURITooLong: An unknown exception occurred.
2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent

** Affects: neutron
     Importance: Undecided
     Assignee: Ilya Shakhat (shakhat)
         Status: New

** Changed in: neutron
     Assignee: (unassigned) => Ilya Shakhat (shakhat)

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1348097

Title:
  Metadata agent fails with RequestURITooLong

Status in OpenStack Neutron (virtual network service):
  New

Bug description:
  The issue is reproducible when project (tenant) contains more than 170
  networks and all these networks plugged into a single router.

  Steps to reproduce on devstack:
   * disable quotas
   * create networks and subnets inside tenant, plug them into the router:
  for i in $(seq 1 170);
  do
    neutron net-create "skynet_$i"
    neutron subnet-create --name "skysubnet_$i" "skynet_$i" "13.0.$i.0/24"
    neutron router-interface-add router1 "skysubnet_$i"
  done
   * launch VM and plug into any network
   * from VM's VNC console do curl http://169.254.169.254/latest/meta-data/instance-id

  Observed behavior:
   * the request fails with HTTP 500 error
   * stacktrace in logs of neutron metadata agent (q-meta screen):
      RequestURITooLong: An unknown exception occurred.

  Stacktrace:
  2014-07-24 08:54:58.465 ERROR neutron.agent.metadata.agent [-] Unexpected error.
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent Traceback (most recent call last):
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/neutron/neutron/agent/metadata/agent.py", line 128, in __call__
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     instance_id, tenant_id = self._get_instance_and_tenant_id(req)
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/neutron/neutron/agent/metadata/agent.py", line 192, in _get_instance_and_tenant_id
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     ports = self._get_ports(remote_address, network_id, router_id)
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/neutron/neutron/agent/metadata/agent.py", line 183, in _get_ports
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     return self._get_ports_for_remote_address(remote_address, networks)
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/neutron/neutron/common/utils.py", line 99, in __call__
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     return self._get_from_cache(target_self, *args, **kwargs)
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/neutron/neutron/common/utils.py", line 77, in _get_from_cache
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     item = self.func(target_self, *args, **kwargs)
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/neutron/neutron/agent/metadata/agent.py", line 163, in _get_ports_for_remote_address
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     return qclient.list_ports(
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/python-neutronclient/neutronclient/v2_0/client.py", line 101, in with_params
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     ret = self.function(instance, *args, **kwargs)
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/python-neutronclient/neutronclient/v2_0/client.py", line 308, in list_ports
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     **_params)
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/python-neutronclient/neutronclient/v2_0/client.py", line 1329, in list
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     for r in self._pagination(collection, path, **params):
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/python-neutronclient/neutronclient/v2_0/client.py", line 1342, in _pagination
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     res = self.get(path, params=params)
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/python-neutronclient/neutronclient/v2_0/client.py", line 1315, in get
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     headers=headers, params=params)
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/python-neutronclient/neutronclient/v2_0/client.py", line 1300, in retry_request
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     headers=headers, params=params)
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/python-neutronclient/neutronclient/v2_0/client.py", line 1228, in do_request
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     self._check_uri_length(action)
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent   File "/opt/stack/python-neutronclient/neutronclient/v2_0/client.py", line 1217, in _check_uri_length
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent     excess=uri_len - self.MAX_URI_LEN)
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent RequestURITooLong: An unknown exception occurred.
  2014-07-24 08:54:58.465 TRACE neutron.agent.metadata.agent

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1348097/+subscriptions


Follow ups

References