create_port can fail with a Lock wait timeout error.
The transaction performed in create_port makes a call to _process_port_bindings which then calls dvr_update_router_addvm. The notification made within dvr_update_router_addvm can hang. The transaction lock is held through the entire hang preventing other create_port threads from getting the lock and then timing out with a "Lock wait timeout."
2014-09-19 04:16:53.332 3391 TRACE neutron.api.v2.resource OperationalError: (OperationalError) (1205, 'Lock wait timeout exceeded; try restarting transaction') 'SELECT ipavailabilityranges.allocation_pool_id AS ipavailabilityranges_allocation_pool_id, ipavailabilityranges.first_ip AS ipavailabilityranges_first_ip, ipavailabilityranges.last_ip AS ipavailabilityranges_last_ip \nFROM ipavailabilityranges INNER JOIN ipallocationpools ON ipallocationpools.id = ipavailabilityranges.allocation_pool_id \nWHERE ipallocationpools.subnet_id = %s \n LIMIT %s FOR UPDATE' ('550ee3a3-6c4d-4a4a-b173-b7603e43356a', 1)
create_port can fail with a Lock wait timeout error.
The transaction performed in create_port makes a call to _process_ port_bindings which then calls dvr_update_ router_ addvm. The notification made within dvr_update_ router_ addvm can hang. The transaction lock is held through the entire hang preventing other create_port threads from getting the lock and then timing out with a "Lock wait timeout."
2014-09-19 04:16:53.332 3391 TRACE neutron. api.v2. resource OperationalError: (OperationalError) (1205, 'Lock wait timeout exceeded; try restarting transaction') 'SELECT ipavailabilityr anges.allocatio n_pool_ id AS ipavailabilityr anges_allocatio n_pool_ id, ipavailabilityr anges.first_ ip AS ipavailabilityr anges_first_ ip, ipavailabilityr anges.last_ ip AS ipavailabilityr anges_last_ ip \nFROM ipavailabilityr anges INNER JOIN ipallocationpools ON ipallocationpoo ls.id = ipavailabilityr anges.allocatio n_pool_ id \nWHERE ipallocationpoo ls.subnet_ id = %s \n LIMIT %s FOR UPDATE' ('550ee3a3- 6c4d-4a4a- b173-b7603e4335 6a', 1)