db_plugin.delete_ports() can lead to long transaction if plugin.deleete_port talks with external system.
it is observed first in nec plugin (bug 1282922), but it affects multiple plugins/drivers.
The detail is described in bug 1282922. Quoted from the original bug report.
----
The case I observed is that delete-port from dhcp-agent (release_dhcp_port RPC call) and delete-port from delete-network API request are run in parallel. plugin.delete-port in nec plugin calls REST API call to an external controller in addition to operates on neutron database.
After my investigation and testing, db_plugin.delete_ports() calls plugin.delete_port() under a transaction. https://github.com/openstack/neutron/blob/master/neutron/db/db_base_plugin_v2.py#L1367
This means the transaction continues over API calls to external controller and it leads to a long transaction.
When plugin.delete_ports() and plugin.delete_port() are run at the same time, even if plugin.delete_port() avoid long transaction, db operations in plugin.delete_port() is blocked and they can fail with timeout.
----
db_plugin. delete_ ports() can lead to long transaction if plugin.deleete_port talks with external system.
it is observed first in nec plugin (bug 1282922), but it affects multiple plugins/drivers.
The detail is described in bug 1282922. Quoted from the original bug report.
----
The case I observed is that delete-port from dhcp-agent (release_dhcp_port RPC call) and delete-port from delete-network API request are run in parallel. plugin.delete-port in nec plugin calls REST API call to an external controller in addition to operates on neutron database.
After my investigation and testing, db_plugin. delete_ ports() calls plugin. delete_ port() under a transaction. /github. com/openstack/ neutron/ blob/master/ neutron/ db/db_base_ plugin_ v2.py#L1367 delete_ ports() and plugin. delete_ port() are run at the same time, even if plugin. delete_ port() avoid long transaction, db operations in plugin. delete_ port() is blocked and they can fail with timeout.
https:/
This means the transaction continues over API calls to external controller and it leads to a long transaction.
When plugin.
----