Nova compute failed to delete VM port with DVR
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
Invalid
|
Medium
|
Zengfa Gao |
Bug Description
This defect is hard to reproduce, only happens when I have more than 3 compute node with DVR enabled.
With the following script, run several times, I can see one VM in ERROR state.
neutron net-create demo-net
netdemoid=$(neutron net-list | awk '{if($4=
neutron subnet-create demo-net 10.100.100.0/24 --name demo-subnet
subnetdemoid=
neutron router-create demo-router
routerdemoid=
exnetid=$(neutron net-list | awk '{if($4=
for i in `seq 1 10`; do
#boot vm, and create floating ip
nova boot --image cirros --flavor m1.tiny --nic net-id=$netdemoid cirrosdemo${i}
cirrosdemoi
output=
echo $output
floatipid[
floatip[
done
# Setup router
neutron router-gateway-set $routerdemoid $exnetid
neutron router-
#wait for VM to be running
sleep 30
for i in `seq 1 10`; do
cirrosfix=
cirrosfixip
output=
echo $output
portid=$(echo "$output" | awk '{print $2;}')
neutron floatingip-
neutron floatingip-delete ${floatipid[i]}
nova delete ${cirrosdemoid[i]}
done
neutron router-
neutron router-
neutron router-delete demo-router
neutron subnet-delete $subnetdemoid
neutron net-delete $netdemoid
Looking at log file:
2014-11-20 17:25:56.258 31042 DEBUG neutron.
2014-11-20 17:25:56.424 31042 ERROR neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.424 31042 TRACE neutron.
2014-11-20 17:25:56.427 31042 INFO neutron.wsgi [req-6eabf07e-
The problem could be some race condition. The code l3_devscheduler
From line 158, got_dvr_
If the port was there when code on 158. Another thread comes in the middle, delete the port. Line 193 will fail because the entry was not there anymore.
Both "neutron floatingip-delete" and "nova delete" can delete the port.
I think if we move l3_devscheduler
agent = self._get_
to line 164
It should resolve the problem.
tags: | added: l3-dvr-backlog |
summary: |
- Novacompute failed to detel VM port with DVR + Novacompute failed to delete VM port with DVR |
summary: |
- Novacompute failed to delete VM port with DVR + Nova compute failed to delete VM port with DVR |
Changed in neutron: | |
importance: | Undecided → Medium |
Changed in neutron: | |
status: | In Progress → Invalid |
Fix proposed to branch: master /review. openstack. org/138822
Review: https:/