← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 2127835] Re: Duplicated function registration in resource_extend

 

Reviewed:  https://review.opendev.org/c/openstack/neutron-lib/+/963682
Committed: https://opendev.org/openstack/neutron-lib/commit/7b3be70b350c3cbe4298bc05ae648fe5fadb19b4
Submitter: "Zuul (22348)"
Branch:    master

commit 7b3be70b350c3cbe4298bc05ae648fe5fadb19b4
Author: XuQi <xuqi_yewu@xxxxxxxxxxxxxxxxxxxx>
Date:   Fri Oct 10 10:14:30 2025 +0000

    Fix duplicate registration for resource_extend
    
    Description field is added to resources by inheriting
    StandardAttrDescriptionMixin, and StandardAttrDescriptionMixin use the
    @has_resource_extenders decorator to register resource_extend functions.
    Any plugin which inherits StandardAttrDescriptionMixin will register
    _extend_standard_attr_description duplicately, leading to performance
    issues caused by duplicate executions. This fix ensures that resource
    extend functions are executed only once.
    
    Closes-bug: #2127835
    Change-Id: Id3e36dc5475ccff69b1257ff9816201ed04257fe
    Signed-off-by: Xu Qi<xuqi_yewu@xxxxxxxxxxxxxxxxxxxx>


** Changed in: neutron
       Status: In Progress => Fix Released

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

Title:
  Duplicated function registration in resource_extend

Status in neutron:
  Fix Released

Bug description:
  PROBLEM:
  Description field is added to resources by inheriting StandardAttrDescriptionMixin, and StandardAttrDescriptionMixin use the @has_resource_extenders decorator to register _extend_standard_attr_description functions. This causes a problem, any plugin which inherits StandardAttrDescriptionMixin will register _extend_standard_attr_description duplicately. 

  I added a log so we can see the _resource_extend_functions dict. When querying a network, it will be executed for 4 times.
  DEBUG neutron_lib.db.resource_extend [None req-369638d4-a6db-4d55-8e9d-ff0d21372161 demo demo] resource: networks, funcs: [<weakref at 0x75d9b1d8c1d0; to 'function' at 0x75d9b19dab00 (_extend_availability_zone)>, <weakref at 0x75d9b1d6b240; to 'function' at 0x75d9b19cb880 (_extend_network_dict_address_scope)>, <weakref at 0x75d9b280c040; to 'function' at 0x75d9b1a712d0 (_extend_network_dict_l3)>, <weakref at 0x75d9b1fec860; to 'function' at 0x75d9b1a73a30 (_extend_network_dict_vlan_qinq)>, <weakref at 0x75d9b1f51670; to 'function' at 0x75d9b1a79e10 (_extend_network_dict_vlan_transparent)>, <weakref at 0x75d9b1eca840; to 'function' at 0x75d9b1a445e0 (_extend_standard_attr_description)>, <weakref at 0x75d9b1adda30; to 'function' at 0x75d9b15a3c70 (_ml2_md_extend_network_dict)>, <weakref at 0x75d9b1eca840; to 'function' at 0x75d9b1a445e0 (_extend_standard_attr_description)>, <weakref at 0x75d9b10ca390; to 'function' at 0x75d9b0b8e170 (_extend_external_network_default)>, <weakref at 0x75d9b10c92b0; to 'function' at 0x75d9b0bd45e0 (_extend_tags_dict)>, <weakref at 0x75d9b10f0a40; to 'function' at 0x75d9b0bd6440 (_extend_resource_dict_timestamp)>, <weakref at 0x75d9b1eca840; to 'function' at 0x75d9b1a445e0 (_extend_standard_attr_description)>, <weakref at 0x75d9b1b01670; to 'function' at 0x75d9b0be0700 (extend_resource_dict_revision)>, <weakref at 0x75d9b1eca840; to 'function' at 0x75d9b1a445e0 (_extend_standard_attr_description)>] {{(pid=11208) apply_funcs /opt/stack/data/venv/lib/python3.10/site-packages/neutron_lib/db/resource_extend.py:95}}
  DEBUG neutron.db.standardattrdescription_db [None req-369638d4-a6db-4d55-8e9d-ff0d21372161 demo demo] extend_standard_attr_description executed {{(pid=11208) _extend_standard_attr_description /opt/stack/neutron/neutron/db/standardattrdescription_db.py:29}}
  DEBUG neutron.db.standardattrdescription_db [None req-369638d4-a6db-4d55-8e9d-ff0d21372161 demo demo] extend_standard_attr_description executed {{(pid=11208) _extend_standard_attr_description /opt/stack/neutron/neutron/db/standardattrdescription_db.py:29}}
  DEBUG neutron.db.standardattrdescription_db [None req-369638d4-a6db-4d55-8e9d-ff0d21372161 demo demo] extend_standard_attr_description executed {{(pid=11208) _extend_standard_attr_description /opt/stack/neutron/neutron/db/standardattrdescription_db.py:29}}
  DEBUG neutron.db.standardattrdescription_db [None req-369638d4-a6db-4d55-8e9d-ff0d21372161 demo demo] extend_standard_attr_description executed {{(pid=11208) _extend_standard_attr_description /opt/stack/neutron/neutron/db/standardattrdescription_db.py:29}}

  When there are a larger number of plugins, a high volume of query
  requests can be time-consuming.

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



References