← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 2103413] Re: Python3.13: Garbage collection happens too early on greenthread switches

 

Reviewed:  https://review.opendev.org/c/openstack/nova/+/952966
Committed: https://opendev.org/openstack/nova/commit/7d946c45350be935a964990e60bd5213c9aa1423
Submitter: "Zuul (22348)"
Branch:    master

commit 7d946c45350be935a964990e60bd5213c9aa1423
Author: Balazs Gibizer <gibi@xxxxxxxxxx>
Date:   Wed Jun 25 10:30:09 2025 +0200

    Fix neutron client dict grabbing
    
    Due to a bug in python3.13 [1] the following code will leads to an
    emptied dict by the GC even though we hold a reference to the dict.
    
    import gc
    
    class A:
    
        def __init__(self, client):
            self.__dict__ = client.__dict__
            self.client = client
    
    class B:
        def __init__(self):
            self.test_attr = "foo"
    
    a = A(B())
    print(a.__dict__)
    print(a.client.__dict__)
    gc.collect()
    print("##  After gc.collect()")
    print(a.__dict__)
    print(a.client.__dict__)
    
     # Output with Python 13
    {'test_attr': 'foo', 'client': <__main__.B object at 0x73ea355a8590>}
    {'test_attr': 'foo', 'client': <__main__.B object at 0x73ea355a8590>}
     ##  After gc.collect()
    {'test_attr': 'foo', 'client': <__main__.B object at 0x73ea355a8590>}
    {}
    
     # Output with Python 12
    {'test_attr': 'foo', 'client': <__main__.B object at 0x79c86f355400>}
    {'test_attr': 'foo', 'client': <__main__.B object at 0x79c86f355400>}
     ##  After gc.collect()
    {'test_attr': 'foo', 'client': <__main__.B object at 0x79c86f355400>}
    {'test_attr': 'foo', 'client': <__main__.B object at 0x79c86f355400>
    
    Our neutron client has this kind of code and therefore failing in
    python3.13. This patch adds __getattr__ instead of trying to hold a
    direct reference to the __dict__. This seems to work around the
    problem.
    
    Co-Authored-By: Johannes Kulik <johannes.kulik@xxxxxxx>
    
    [1] https://github.com/python/cpython/issues/130327
    Closes-Bug: #2103413
    
    Change-Id: I87c9fbb9331135674232c6e77d700966a938b0ac


** Changed in: nova
       Status: In Progress => 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/2103413

Title:
  Python3.13: Garbage collection happens too early on greenthread
  switches

Status in OpenStack Compute (nova):
  Fix Released
Status in Release Notes for Ubuntu:
  In Progress
Status in nova package in Ubuntu:
  New

Bug description:
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f] Traceback (most recent call last):
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/nova/compute/manager.py", line 2648, in _build_and_run_instance
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     self.driver.spawn(context, instance, image_meta,
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                       injected_files, admin_password,
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                       allocs, network_info=network_info,
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                       block_device_info=block_device_info,
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                       accel_info=accel_info)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                       ^^^^^^^^^^^^^^^^^^^^^^
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/nova/virt/libvirt/driver.py", line 4832, in spawn
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     xml = self._get_guest_xml(context, instance, network_info,
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                               disk_info, image_meta,
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                               block_device_info=block_device_info,
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                               mdevs=mdevs, accel_info=accel_info)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/nova/virt/libvirt/driver.py", line 7997, in _get_guest_xml
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     network_info_str = str(network_info)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/nova/network/model.py", line 622, in __str__
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     return self._sync_wrapper(fn, *args, **kwargs)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]            ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/nova/network/model.py", line 605, in _sync_wrapper
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     self.wait()
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     ~~~~~~~~~^^
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/nova/network/model.py", line 637, in wait
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     self[:] = self._gt.wait()
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]               ~~~~~~~~~~~~~^^
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/eventlet/greenthread.py", line 232, in wait
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     return self._exit_event.wait()
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]            ~~~~~~~~~~~~~~~~~~~~~^^
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/eventlet/event.py", line 131, in wait
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     current.throw(*self._exc)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     ~~~~~~~~~~~~~^^^^^^^^^^^^
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/eventlet/greenthread.py", line 272, in main
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     result = function(*args, **kwargs)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/nova/utils.py", line 663, in context_wrapper
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     return func(*args, **kwargs)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/nova/compute/manager.py", line 2018, in _allocate_network_async
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     raise e
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/nova/compute/manager.py", line 1996, in _allocate_network_async
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     nwinfo = self.network_api.allocate_for_instance(
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]             context, instance,
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     ...<3 lines>...
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]             resource_provider_mapping=resource_provider_mapping,
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]             network_arqs=network_arqs)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/nova/network/neutron.py", line 1287, in allocate_for_instance
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     nw_info = self.get_instance_nw_info(
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]         context, instance, networks=ordered_nets,
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]         port_ids=ordered_port_ids,
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]         admin_client=admin_client,
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]         preexisting_port_ids=preexisting_port_ids)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/nova/network/neutron.py", line 2047, in get_instance_nw_info
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     result = self._get_instance_nw_info(context, instance, **kwargs)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/nova/network/neutron.py", line 2073, in _get_instance_nw_info
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     nw_info = self._build_network_info_model(context, instance, networks,
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                                              port_ids, admin_client,
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                                              preexisting_port_ids,
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                                              refresh_vif_id,
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                                              force_refresh=force_refresh)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/nova/network/neutron.py", line 3496, in _build_network_info_model
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     data = client.list_ports(**search_opts)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/nova/network/neutron.py", line 196, in wrapper
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     ret = obj(*args, **kwargs)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/neutronclient/v2_0/client.py", line 815, in list_ports
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     return self.list('ports', self.ports_path, retrieve_all,
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]            ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                      **_params)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                      ^^^^^^^^^^
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/nova/network/neutron.py", line 196, in wrapper
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     ret = obj(*args, **kwargs)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/neutronclient/v2_0/client.py", line 372, in list
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     for r in self._pagination(collection, path, **params):
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]              ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/neutronclient/v2_0/client.py", line 387, in _pagination
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     res = self.get(path, params=params)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/nova/network/neutron.py", line 196, in wrapper
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     ret = obj(*args, **kwargs)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/neutronclient/v2_0/client.py", line 356, in get
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     return self.retry_request("GET", action, body=body,
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]            ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                               headers=headers, params=params)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/nova/network/neutron.py", line 196, in wrapper
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     ret = obj(*args, **kwargs)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/neutronclient/v2_0/client.py", line 333, in retry_request
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     return self.do_request(method, action, body=body,
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]            ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                            headers=headers, params=params)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/nova/network/neutron.py", line 196, in wrapper
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     ret = obj(*args, **kwargs)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/neutronclient/v2_0/client.py", line 284, in do_request
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     resp, replybody = self.httpclient.do_request(action, method, body=body,
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                       ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                                                  headers=headers)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                                                  ^^^^^^^^^^^^^^^^
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/neutronclient/client.py", line 341, in do_request
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     self._check_uri_length(url)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     ~~~~~~~~~~~~~~~~~~~~~~^^^^^
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/neutronclient/client.py", line 334, in _check_uri_length
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     uri_len = len(self.endpoint_url) + len(url)
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]                   ^^^^^^^^^^^^^^^^^
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/neutronclient/client.py", line 348, in endpoint_url
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     return self.get_endpoint()
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]            ~~~~~~~~~~~~~~~~~^^
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]   File "/usr/lib/python3/dist-packages/keystoneauth1/adapter.py", line 330, in get_endpoint
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]     if self.endpoint_override:
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f]        ^^^^^^^^^^^^^^^^^^^^^^
  2025-03-17 11:08:00.390 38463 ERROR nova.compute.manager [instance: 5c6786d9-15c5-414f-990f-eff2bf9f4d1f] AttributeError: 'SessionClient' object has no attribute 'endpoint_override'

  
  This using Plucky Proposed - 25.04
  nova-compute: 3:30.0.0+git2025030311.e6b8b051a9-0ubuntu1

  This nova compute version is a snapshot of current master branch from
  the Nova project, RC1 will soon be available:
  https://review.opendev.org/c/openstack/releases/+/943941

  This happens during testing with Tempest, in tests such as:
  tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_network_basic_ops

  Nova should successfully create a VM

  Nova failed to communicate with neutron because of an attribute error

  I've tested the same version of Nova using the Epoxy Cloud archive
  from proposed, and it worked correctly.

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