Nova API service stuck in endless loop if image_service=nova.image.s3.S3ImageService

Bug #739283 reported by Andrey Brindeyev
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Compute (nova)
New
Undecided
Unassigned

Bug Description

Tested that on last bzr837 and several revs before. If you have --image_service=nova.image.s3.S3ImageService defined in /etc/nova/nova.conf than starting nova-api is terminated by Python with "RuntimeError: maximum recursion depth exceeded" error.

Workaroung: change --image_service flag to "nova.image.local.LocalImageService"

Here is /etc/nova/nova.conf:
--verbose=true
--ec2_url=http://10.0.0.1:8773/services/Cloud
--s3_host=10.0.0.1
--cc_host=10.0.0.1
--rabbit_host=10.0.0.1
--sql_connection=mysql://nova:nova@10.0.0.1/nova
--glance_port=9292
--glance_host=127.0.0.1
--use_s3=true
--ajax_console_proxy_url=http://172.16.128.236:8000
--libvirt_type=kvm
--use_syslog=false
--node_availability_zone=z1
--logging_context_format_string=%(asctime)s %(name)s: %(levelname)s [%(request_id)s %(user)s %(project)s] %(message)s
--logging_default_format_string=%(asctime)s %(name)s: %(message)s
--logging_debug_format_suffix=
--use_cow_images=true
--auth_driver=nova.auth.dbdriver.DbDriver
--network_manager=nova.network.manager.VlanManager
--scheduler_driver=nova.scheduler.zone.ZoneScheduler
--image_service=nova.image.s3.S3ImageService
--use_ipv6=false
--ca_path=/var/lib/nova/CA
--keys_path=/var/lib/nova/keys
--images_path=/var/lib/nova/images
--buckets_path=/var/lib/nova/buckets
--instances_path=/var/lib/nova/instances
--networks_path=/var/lib/nova/networks
--dhcpbridge_flagfile=/etc/nova/nova.conf
--dhcpbridge=/usr/bin/nova-dhcpbridge
--injected_network_template=/usr/share/nova/interfaces.rhel.template
--libvirt_xml_template=/usr/share/nova/libvirt.xml.template
--vpn_client_template=/usr/share/nova/client.ovpn.template
--credentials_template=/usr/share/nova/novarc.template
--state_path=/var/lib/nova
--lock_path=/var/lib/nova/tmp

Here is /var/log/nova/nova-api.log:

2011-03-21 13:12:43,492 nova.api: Starting nova-api node (version 2011.2-workspace:tarmac-20110321054627-gg4tik80qhqco96z)
2011-03-21 13:12:43,492 nova.api: Full set of FLAGS:
<<<< SKIPPED TO SAVE SPACE >>>>
2011-03-21 13:12:43,506 nova: Using paste.deploy config at: /etc/nova/api-paste.ini
2011-03-21 13:12:43,511 nova: App Config: ec2
{'/2007-08-29': 'ec2metadata', '/services/Admin': 'ec2admin', '/2007-10-10': 'ec2metadata', '__file__': '/etc/nova/api-paste.ini', '/latest': 'ec2metadata', 'here': '/etc/nova', '/2007-03-01': 'ec2metadata', '/2007-01-19': 'ec2metadata', '/2008-09-01': 'ec2metadata', '/services/Cloud': 'ec2cloud', '/2008-02-01': 'ec2metadata', '/1.0': 'ec2metadata', '/2009-04-04': 'ec2metadata', '/2007-12-15': 'ec2metadata', '/': 'ec2versions'}
2011-03-21 13:12:43,511 nova: Running ec2 API
2011-03-21 13:12:43,619 nova: maximum recursion depth exceeded
(nova): TRACE: Traceback (most recent call last):
(nova): TRACE: File "/usr/bin/nova-api", line 60, in <module>
(nova): TRACE: service = service.serve_wsgi(service.ApiService)
(nova): TRACE: File "/usr/lib/python2.6/site-packages/nova/service.py", line 306, in serve_wsgi
(nova): TRACE: service.start()
(nova): TRACE: File "/usr/lib/python2.6/site-packages/nova/service.py", line 240, in start
(nova): TRACE: self.wsgi_app = _run_wsgi(self.conf, self.apis)
(nova): TRACE: File "/usr/lib/python2.6/site-packages/nova/service.py", line 321, in _run_wsgi
(nova): TRACE: app = wsgi.load_paste_app(paste_config_file, api)
(nova): TRACE: File "/usr/lib/python2.6/site-packages/nova/wsgi.py", line 559, in load_paste_app
(nova): TRACE: app = deploy.loadapp("config:%s" % filename, name=appname)
(nova): TRACE: File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 204, in loadapp
(nova): TRACE: return loadobj(APP, uri, name=name, **kw)
(nova): TRACE: File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 225, in loadobj
(nova): TRACE: return context.create()
(nova): TRACE: File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 625, in create
(nova): TRACE: return self.object_type.invoke(self)
(nova): TRACE: File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 108, in invoke
(nova): TRACE: **context.local_conf)
(nova): TRACE: File "/usr/lib/python2.6/site-packages/paste/deploy/util/fixtypeerror.py", line 57, in fix_call
(nova): TRACE: val = callable(*args, **kw)
(nova): TRACE: File "/usr/lib/python2.6/site-packages/paste/urlmap.py", line 25, in urlmap_factory
(nova): TRACE: app = loader.get_app(app_name, global_conf=global_conf)
(nova): TRACE: File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 297, in get_app
(nova): TRACE: name=name, global_conf=global_conf).create()
(nova): TRACE: File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 625, in create
(nova): TRACE: return self.object_type.invoke(self)
(nova): TRACE: File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 168, in invoke
(nova): TRACE: app = filter(app)
(nova): TRACE: File "/usr/lib/python2.6/site-packages/nova/wsgi.py", line 212, in _factory
(nova): TRACE: return cls(app, **local_config)
(nova): TRACE: File "/usr/lib/python2.6/site-packages/nova/api/ec2/__init__.py", line 191, in __init__
(nova): TRACE: self.controller = utils.import_class(controller)()
(nova): TRACE: File "/usr/lib/python2.6/site-packages/nova/api/ec2/cloud.py", line 84, in __init__
(nova): TRACE: self.image_service = s3.S3ImageService()
(nova): TRACE: File "/usr/lib/python2.6/site-packages/nova/image/s3.py", line 50, in __init__
(nova): TRACE: service = utils.import_object(FLAGS.image_service)
(nova): TRACE: File "/usr/lib/python2.6/site-packages/nova/utils.py", line 75, in import_object
(nova): TRACE: return cls()
(nova): TRACE: File "/usr/lib/python2.6/site-packages/nova/image/s3.py", line 50, in __init__
(nova): TRACE: service = utils.import_object(FLAGS.image_service)
(nova): TRACE: File "/usr/lib/python2.6/site-packages/nova/utils.py", line 75, in import_object
(nova): TRACE: return cls()

<<<< LOTS OF SAME LINES SKIPPED HERE >>>>

(nova): TRACE: File "/usr/lib/python2.6/site-packages/nova/image/s3.py", line 50, in __init__
(nova): TRACE: service = utils.import_object(FLAGS.image_service)
(nova): TRACE: File "/usr/lib/python2.6/site-packages/nova/utils.py", line 75, in import_object
(nova): TRACE: return cls()
(nova): TRACE: File "/usr/lib/python2.6/site-packages/nova/image/s3.py", line 50, in __init__
(nova): TRACE: service = utils.import_object(FLAGS.image_service)
(nova): TRACE: File "/usr/lib/python2.6/site-packages/nova/flags.py", line 139, in __getattr__
(nova): TRACE: val = gflags.FlagValues.__getattr__(self, name)
(nova): TRACE: File "/usr/lib/python2.6/site-packages/gflags.py", line 884, in __getattr__
(nova): TRACE: fl = self.FlagDict()
(nova): TRACE: RuntimeError: maximum recursion depth exceeded
(nova): TRACE:

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.