I did experience another concurrent port creation while deleting the network, and it looks like the delete is successful this time. See snippet below: Committing transaction delete_network /opt/stack/new/neutron/neutron/plugins/ml2/plugin.py:423 2013-11-02 00:47:37.546 467 DEBUG neutron.plugins.ml2.db [-] get_port_and_sgs() called for port_id 0437693e-2eac-41b8-9016-8f082397825d get_port_and_sgs /opt/stack/new/neutron/neutron/plugins/ml2/db.py:99 2013-11-02 00:47:37.553 467 DEBUG neutron.openstack.common.rpc.amqp [-] UNIQUE_ID is 89ab404a77874722a55ae71666bbc9ab. _add_unique_id /opt/stack/new/neutron/neutron/openstack/common/rpc/amqp.py:339 2013-11-02 00:47:37.561 467 ERROR neutron.plugins.ml2.plugin [-] A concurrent port creation has occurred 2013-11-02 00:47:37.561 467 TRACE neutron.plugins.ml2.plugin Traceback (most recent call last): 2013-11-02 00:47:37.561 467 TRACE neutron.plugins.ml2.plugin File "/opt/stack/new/neutron/neutron/plugins/ml2/plugin.py", line 424, in delete_network 2013-11-02 00:47:37.561 467 TRACE neutron.plugins.ml2.plugin break 2013-11-02 00:47:37.561 467 TRACE neutron.plugins.ml2.plugin File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 456, in __exit__ 2013-11-02 00:47:37.561 467 TRACE neutron.plugins.ml2.plugin self.commit() 2013-11-02 00:47:37.561 467 TRACE neutron.plugins.ml2.plugin File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 368, in commit 2013-11-02 00:47:37.561 467 TRACE neutron.plugins.ml2.plugin self._prepare_impl() 2013-11-02 00:47:37.561 467 TRACE neutron.plugins.ml2.plugin File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 347, in _prepare_impl 2013-11-02 00:47:37.561 467 TRACE neutron.plugins.ml2.plugin self.session.flush() 2013-11-02 00:47:37.561 467 TRACE neutron.plugins.ml2.plugin File "/opt/stack/new/neutron/neutron/openstack/common/db/sqlalchemy/session.py", line 542, in _wrap 2013-11-02 00:47:37.561 467 TRACE neutron.plugins.ml2.plugin raise exception.DBError(e) 2013-11-02 00:47:37.561 467 TRACE neutron.plugins.ml2.plugin DBError: (IntegrityError) null value in column "network_id" violates not-null constraint 2013-11-02 00:47:37.561 467 TRACE neutron.plugins.ml2.plugin 'UPDATE ports SET network_id=%(network_id)s WHERE ports.id = %(ports_id)s' {'network_id': None, 'ports_id': u'36db6fb5-81d2-4b71-82af-8523b92ed91d'} 2013-11-02 00:47:37.561 467 TRACE neutron.plugins.ml2.plugin 2013-11-02 00:47:37.566 467 DEBUG neutron.plugins.ml2.plugin [-] Ports to auto-delete: [] delete_network /opt/stack/new/neutron/neutron/plugins/ml2/plugin.py:390 2013-11-02 00:47:37.569 467 DEBUG neutron.plugins.ml2.plugin [-] Subnets to auto-delete: [] delete_network /opt/stack/new/neutron/neutron/plugins/ml2/plugin.py:404 2013-11-02 00:47:37.579 467 DEBUG neutron.plugins.ml2.plugin [-] Deleting port 36db6fb5-81d2-4b71-82af-8523b92ed91d delete_port /opt/stack/new/neutron/neutron/plugins/ml2/plugin.py:630 2013-11-02 00:47:37.615 467 DEBUG neutron.openstack.common.rpc.amqp [-] UNIQUE_ID is 39578ebe10bd441a9cc6e373fcbaa83e. _add_unique_id /opt/stack/new/neutron/neutron/openstack/common/rpc/amqp.py:339 2013-11-02 00:47:37.623 467 DEBUG iso8601.iso8601 [-] Parsed 2013-11-03T00:47:37Z into {'tz_sign': None, 'second_fraction': None, 'hour': u'00', 'tz_hour': None, 'month': u'11', 'timezone': u'Z', 'second': u'37', 'tz_minute': None, 'year': u'2013', 'separator': u'T', 'day': u'03', 'minute': u'47'} with default timezone parse_date /usr/local/lib/python2.7/dist-packages/iso8601/iso8601.py:166 2013-11-02 00:47:37.623 467 DEBUG iso8601.iso8601 [-] Got u'2013' for 'year' with default None to_int /usr/local/lib/python2.7/dist-packages/iso8601/iso8601.py:124 2013-11-02 00:47:37.623 467 DEBUG iso8601.iso8601 [-] Got u'11' for 'month' with default None to_int /usr/local/lib/python2.7/dist-packages/iso8601/iso8601.py:124 2013-11-02 00:47:37.623 467 DEBUG iso8601.iso8601 [-] Got u'03' for 'day' with default None to_int /usr/local/lib/python2.7/dist-packages/iso8601/iso8601.py:124 2013-11-02 00:47:37.623 467 DEBUG iso8601.iso8601 [-] Got u'00' for 'hour' with default None to_int /usr/local/lib/python2.7/dist-packages/iso8601/iso8601.py:124 2013-11-02 00:47:37.624 467 DEBUG iso8601.iso8601 [-] Got u'47' for 'minute' with default None to_int /usr/local/lib/python2.7/dist-packages/iso8601/iso8601.py:124 2013-11-02 00:47:37.624 467 DEBUG iso8601.iso8601 [-] Got u'37' for 'second' with default None to_int /usr/local/lib/python2.7/dist-packages/iso8601/iso8601.py:124 2013-11-02 00:47:37.624 467 DEBUG keystoneclient.middleware.auth_token [-] Storing aac7928d547e2f56bd5e32377e5e9450 token in memcache _cache_put /opt/stack/new/python-keystoneclient/keystoneclient/middleware/auth_token.py:1061 2013-11-02 00:47:37.624 467 DEBUG keystoneclient.middleware.auth_token [-] Received request from user: 4770c57787c34e32beb4c929cc059e98 with project_id : 1223417484664294bfa7a2e32dbedf71 and roles: _member_,admin _build_user_headers /opt/stack/new/python-keystoneclient/keystoneclient/middleware/auth_token.py:922 2013-11-02 00:47:37.625 467 DEBUG routes.middleware [-] No route matched for GET /networks.json __call__ /usr/lib/python2.7/dist-packages/routes/middleware.py:97 2013-11-02 00:47:37.626 467 DEBUG routes.middleware [-] Matched GET /networks.json __call__ /usr/lib/python2.7/dist-packages/routes/middleware.py:100 2013-11-02 00:47:37.626 467 DEBUG routes.middleware [-] Route path: '/networks{.format}', defaults: {'action': u'index', 'controller': >} __call__ /usr/lib/python2.7/dist-packages/routes/middleware.py:102 2013-11-02 00:47:37.626 467 DEBUG routes.middleware [-] Match dict: {'action': u'index', 'controller': >, 'format': u'json'} __call__ /usr/lib/python2.7/dist-packages/routes/middleware.py:103 2013-11-02 00:47:37.632 467 DEBUG neutron.openstack.common.rpc.amqp [-] UNIQUE_ID is 865481528a92413ca2ba1600a7e79399. _add_unique_id /opt/stack/new/neutron/neutron/openstack/common/rpc/amqp.py:339 2013-11-02 00:47:37.641 467 DEBUG neutron.plugins.ml2.plugin [-] Calling base delete_port delete_port /opt/stack/new/neutron/neutron/plugins/ml2/plugin.py:647 2013-11-02 00:47:37.645 467 DEBUG neutron.api.v2.base [-] Policy rule:get_network:shared not found. Assuming no authZ check is defined for shared _is_visible /opt/stack/new/neutron/neutron/api/v2/base.py:143 2013-11-02 00:47:37.647 467 INFO neutron.wsgi [-] 127.0.0.1 - - [02/Nov/2013 00:47:37] "GET /v2.0/networks.json?tenant_id=7d4d1f8fdb354c349e29c062dc9e7816&shared=False HTTP/1.1" 200 497 0.154423 2013-11-02 00:47:37.649 467 INFO neutron.wsgi [-] (467) accepted ('127.0.0.1', 38928) 2013-11-02 00:47:37.650 467 DEBUG keystoneclient.middleware.auth_token [-] Authenticating user token __call__ /opt/stack/new/python-keystoneclient/keystoneclient/middleware/auth_token.py:558 2013-11-02 00:47:37.650 467 DEBUG keystoneclient.middleware.auth_token [-] Removing headers from request environment: X-Identity-Status,X-Domain-Id,X-Domain-Name,X-Project-Id,X-Project-Name,X-Project-Domain-Id,X-Project-Domain-Name,X-User-Id,X-User-Name,X-User-Domain-Id,X-User-Domain-Name,X-Roles,X-Service-Catalog,X-User,X-Tenant-Id,X-Tenant-Name,X-Tenant,X-Role _remove_auth_headers /opt/stack/new/python-keystoneclient/keystoneclient/middleware/auth_token.py:617 2013-11-02 00:47:37.651 467 DEBUG iso8601.iso8601 [-] Parsed 2013-11-03T00:47:37.000000Z into {'tz_sign': None, 'second_fraction': u'000000', 'hour': u'00', 'tz_hour': None, 'month': u'11', 'timezone': u'Z', 'second': u'37', 'tz_minute': None, 'year': u'2013', 'separator': u'T', 'day': u'03', 'minute': u'47'} with default timezone parse_date /usr/local/lib/python2.7/dist-packages/iso8601/iso8601.py:166 2013-11-02 00:47:37.651 467 DEBUG iso8601.iso8601 [-] Got u'2013' for 'year' with default None to_int /usr/local/lib/python2.7/dist-packages/iso8601/iso8601.py:124 2013-11-02 00:47:37.651 467 DEBUG iso8601.iso8601 [-] Got u'11' for 'month' with default None to_int /usr/local/lib/python2.7/dist-packages/iso8601/iso8601.py:124 2013-11-02 00:47:37.651 467 DEBUG iso8601.iso8601 [-] Got u'03' for 'day' with default None to_int /usr/local/lib/python2.7/dist-packages/iso8601/iso8601.py:124 2013-11-02 00:47:37.651 467 DEBUG iso8601.iso8601 [-] Got u'00' for 'hour' with default None to_int /usr/local/lib/python2.7/dist-packages/iso8601/iso8601.py:124 2013-11-02 00:47:37.652 467 DEBUG iso8601.iso8601 [-] Got u'47' for 'minute' with default None to_int /usr/local/lib/python2.7/dist-packages/iso8601/iso8601.py:124 2013-11-02 00:47:37.652 467 DEBUG iso8601.iso8601 [-] Got u'37' for 'second' with default None to_int /usr/local/lib/python2.7/dist-packages/iso8601/iso8601.py:124 2013-11-02 00:47:37.652 467 DEBUG keystoneclient.middleware.auth_token [-] Returning cached token aac7928d547e2f56bd5e32377e5e9450 _cache_get /opt/stack/new/python-keystoneclient/keystoneclient/middleware/auth_token.py:1016 2013-11-02 00:47:37.652 467 DEBUG keystoneclient.middleware.auth_token [-] Received request from user: 4770c57787c34e32beb4c929cc059e98 with project_id : 1223417484664294bfa7a2e32dbedf71 and roles: _member_,admin _build_user_headers /opt/stack/new/python-keystoneclient/keystoneclient/middleware/auth_token.py:922 2013-11-02 00:47:37.653 467 DEBUG routes.middleware [-] No route matched for GET /networks.json __call__ /usr/lib/python2.7/dist-packages/routes/middleware.py:97 2013-11-02 00:47:37.653 467 DEBUG routes.middleware [-] Matched GET /networks.json __call__ /usr/lib/python2.7/dist-packages/routes/middleware.py:100 2013-11-02 00:47:37.653 467 DEBUG routes.middleware [-] Route path: '/networks{.format}', defaults: {'action': u'index', 'controller': >} __call__ /usr/lib/python2.7/dist-packages/routes/middleware.py:102 2013-11-02 00:47:37.653 467 DEBUG routes.middleware [-] Match dict: {'action': u'index', 'controller': >, 'format': u'json'} __call__ /usr/lib/python2.7/dist-packages/routes/middleware.py:103 2013-11-02 00:47:37.674 467 INFO neutron.wsgi [-] 127.0.0.1 - - [02/Nov/2013 00:47:37] "GET /v2.0/networks.json?shared=True HTTP/1.1" 200 139 0.023507 2013-11-02 00:47:37.674 467 DEBUG neutron.openstack.common.rpc.amqp [-] Making asynchronous fanout cast... fanout_cast /opt/stack/new/neutron/neutron/openstack/common/rpc/amqp.py:568 2013-11-02 00:47:37.675 467 DEBUG neutron.openstack.common.rpc.amqp [-] UNIQUE_ID is 362daa68647048c089194340082e6028. _add_unique_id /opt/stack/new/neutron/neutron/openstack/common/rpc/amqp.py:339 2013-11-02 00:47:37.692 467 DEBUG neutron.openstack.common.rpc.amqp [-] received {u'_context_roles': [u'admin'], u'_context_read_deleted': u'no', u'_context_tenant_id': None, u'args': {u'agent_state': {u'agent_state': {u'topic': u'N/A', u'binary': u'neutron-openvswitch-agent', u'host': u'devstack-precise-hpcloud-az2-631887', u'agent_type': u'Open vSwitch agent', u'configurations': {u'tunnel_types': [], u'tunneling_ip': u'10.7.5.5', u'bridge_mappings': {}, u'l2_population': False, u'devices': 15}}}, u'time': u'2013-11-02T00:47:37.681206'}, u'namespace': None, u'_unique_id': u'3ef99241d29f439ab6e70e93651c719f', u'_context_is_admin': True, u'version': u'1.0', u'_context_project_id': None, u'_context_timestamp': u'2013-11-02 00:39:57.388447', u'_context_user_id': None, u'method': u'report_state'} _safe_log /opt/stack/new/neutron/neutron/openstack/common/rpc/common.py:276 2013-11-02 00:47:37.693 467 DEBUG neutron.openstack.common.rpc.amqp [-] unpacked context: {'user_id': None, 'roles': [u'admin'], 'tenant_id': None, 'is_admin': True, 'timestamp': u'2013-11-02 00:39:57.388447', 'project_id': None, 'read_deleted': u'no'} _safe_log /opt/stack/new/neutron/neutron/openstack/common/rpc/common.py:276 2013-11-02 00:47:37.706 467 DEBUG neutron.plugins.ml2.plugin [-] Ports to auto-delete: [] delete_network /opt/stack/new/neutron/neutron/plugins/ml2/plugin.py:390 2013-11-02 00:47:37.709 467 DEBUG neutron.openstack.common.rpc.amqp [-] received {u'_context_roles': [u'admin'], u'_msg_id': u'b0fe97f2a9614bdda1822c2fe0baa3f0', u'_context_read_deleted': u'no', u'_reply_q': u'reply_531ffd6633d841649c9ade02ae8e6237', u'_context_tenant_id': None, u'args': {u'devices': [u'6f8dfbe9-47a7-462f-9774-015394e00ea4', u'0437693e-2eac-41b8-9016-8f082397825d']}, u'namespace': None, u'_unique_id': u'9a99263148214d58865581cb5a5871de', u'_context_is_admin': True, u'version': u'1.1', u'_context_project_id': None, u'_context_timestamp': u'2013-11-02 00:39:57.388447', u'_context_user_id': None, u'method': u'security_group_rules_for_devices'} _safe_log /opt/stack/new/neutron/neutron/openstack/common/rpc/common.py:276 2013-11-02 00:47:37.710 467 DEBUG neutron.openstack.common.rpc.amqp [-] unpacked context: {'user_id': None, 'roles': [u'admin'], 'tenant_id': None, 'is_admin': True, 'timestamp': u'2013-11-02 00:39:57.388447', 'project_id': None, 'read_deleted': u'no'} _safe_log /opt/stack/new/neutron/neutron/openstack/common/rpc/common.py:276 2013-11-02 00:47:37.711 467 DEBUG neutron.plugins.ml2.plugin [-] Subnets to auto-delete: [] delete_network /opt/stack/new/neutron/neutron/plugins/ml2/plugin.py:404 2013-11-02 00:47:37.714 467 DEBUG neutron.plugins.ml2.db [-] get_port_and_sgs() called for port_id 6f8dfbe9-47a7-462f-9774-015394e00ea4 get_port_and_sgs /opt/stack/new/neutron/neutron/plugins/ml2/db.py:99 2013-11-02 00:47:37.733 467 DEBUG neutron.plugins.ml2.plugin [-] Deleting network record delete_network /opt/stack/new/neutron/neutron/plugins/ml2/plugin.py:415 2013-11-02 00:47:37.733 467 DEBUG neutron.plugins.ml2.plugin [-] Committing transaction delete_network /opt/stack/new/neutron/neutron/plugins/ml2/plugin.py:423