Not sure, but looks like the root cause is in how tap device is removed from the ovs bridge:
2018-12-20 14:34:11.687 7 DEBUG neutron.agent.linux.async_process [-] Output received from [ovsdb-client monitor tcp:127.0.0.1:6640 Interface name,ofport,external_ids --format=json]: {"data":[["dd9fb3ea-df1a-49cd-8bb6-a705b66dbcd6","old",null,36,null],["","new","tapfce15578-ba",-1,["map",[["attached-mac","fa:16:3e:d5:10:62"],["iface-id","fce15578-ba1c-4e96-a8ba-1612b389aada"],["iface-status","active"],["vm-id","ef1afb42-ab8f-448b-876c-b1705e718ec5"]]]]],"headings":["row","action","name","ofport","external_ids"]} _read_stdout /usr/lib/python2.7/site-packages/neutron/agent/linux/async_process.py:239
2018-12-20 14:34:11.879 7 DEBUG neutron.agent.linux.async_process [-] Output received from [ovsdb-client monitor tcp:127.0.0.1:6640 Interface name,ofport,external_ids --format=json]: {"data":[["dd9fb3ea-df1a-49cd-8bb6-a705b66dbcd6","delete","tapfce15578-ba",-1,["map",[["attached-mac","fa:16:3e:d5:10:62"],["iface-id","fce15578-ba1c-4e96-a8ba-1612b389aada"],["iface-status","active"],["vm-id","ef1afb42-ab8f-448b-876c-b1705e718ec5"]]]]],"headings":["row","action","name","ofport","external_ids"]} _read_stdout /usr/lib/python2.7/site-packages/neutron/agent/linux/async_process.py:239
If rpc_loop processes ports when ovs Interface is still listed (but in fact device is already removed from the node), then we are getting ofport=-1 with further effects.
Not sure, but looks like the root cause is in how tap device is removed from the ovs bridge:
2018-12-20 14:34:11.687 7 DEBUG neutron. agent.linux. async_process [-] Output received from [ovsdb-client monitor tcp:127.0.0.1:6640 Interface name,ofport, external_ ids --format=json]: {"data" :[["dd9fb3ea- df1a-49cd- 8bb6-a705b66dbc d6","old" ,null,36, null],[ "","new" ,"tapfce15578- ba",-1, ["map", [["attached- mac","fa: 16:3e:d5: 10:62"] ,["iface- id","fce15578- ba1c-4e96- a8ba-1612b389aa da"],[" iface-status" ,"active" ],["vm- id","ef1afb42- ab8f-448b- 876c-b1705e718e c5"]]]] ],"headings" :["row" ,"action" ,"name" ,"ofport" ,"external_ ids"]} _read_stdout /usr/lib/ python2. 7/site- packages/ neutron/ agent/linux/ async_process. py:239
2018-12-20 14:34:11.879 7 DEBUG neutron. agent.linux. async_process [-] Output received from [ovsdb-client monitor tcp:127.0.0.1:6640 Interface name,ofport, external_ ids --format=json]: {"data" :[["dd9fb3ea- df1a-49cd- 8bb6-a705b66dbc d6","delete" ,"tapfce15578- ba",-1, ["map", [["attached- mac","fa: 16:3e:d5: 10:62"] ,["iface- id","fce15578- ba1c-4e96- a8ba-1612b389aa da"],[" iface-status" ,"active" ],["vm- id","ef1afb42- ab8f-448b- 876c-b1705e718e c5"]]]] ],"headings" :["row" ,"action" ,"name" ,"ofport" ,"external_ ids"]} _read_stdout /usr/lib/ python2. 7/site- packages/ neutron/ agent/linux/ async_process. py:239
If rpc_loop processes ports when ovs Interface is still listed (but in fact device is already removed from the node), then we are getting ofport=-1 with further effects.