(Apparently I've been sitting on this since yesterday, sorry.) On Thu, Aug 11, 2016 at 05:51:39PM +0530, Numan Siddique wrote: > When ovn-controller reconnects to the ovs-vswitchd, it deletes all the > OF flows in the switch. It doesn't install the flows again, leaving > the datapath broken unless ovn-controller is restarted or ovn-northd > updates the SB DB. > > The reason for this is > - lflow_reset_processing() is not called after the reconnection > - the hmap "installed_flows" is not cleared, because of which > ofctrl_put skips adding the flows to the switch. > > This patch fixes the issue and also adds a test case to test > this scenario. > > Signed-off-by: Numan Siddique <nusid...@redhat.com> > --- > ovn/controller/ofctrl.c | 7 ++++ > tests/ovn.at | 95 > +++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 102 insertions(+) > > v1 -> v2 > -------- > * Enhanced the test case to restart vswitchd and restore the flows
Thanks for the patch! I folded in the following incremental so that the test is not so sensitive to timing (also it will execute faster in the common case). I applied this to master, thanks again! --8<--------------------------cut here-------------------------->8-- diff --git a/tests/ovn.at b/tests/ovn.at index 8f2b50c..cc40b26 100644 --- a/tests/ovn.at +++ b/tests/ovn.at @@ -4388,19 +4388,19 @@ restart_vswitchd () { # Save the flows, restart vswitchd and restore the flows restart_vswitchd true -sleep 2 -total_flows_after_restart=`as hv1 ovs-ofctl dump-flows br-int | wc -l` -echo "Total flows after vswitchd restart = " $total_flows_after_restart - -AT_CHECK([test "${total_flows}" = "${total_flows_after_restart}"]) +OVS_WAIT_UNTIL([ + total_flows_after_restart=`as hv1 ovs-ofctl dump-flows br-int | wc -l` + echo "Total flows after vswitchd restart = " $total_flows_after_restart + test "${total_flows}" = "${total_flows_after_restart}" +]) # Restart vswitchd without restoring restart_vswitchd false -sleep 2 -total_flows_after_restart=`as hv1 ovs-ofctl dump-flows br-int | wc -l` -echo "Total flows after vswitchd restart = " $total_flows_after_restart - -AT_CHECK([test "${total_flows}" = "${total_flows_after_restart}"]) +OVS_WAIT_UNTIL([ + total_flows_after_restart=`as hv1 ovs-ofctl dump-flows br-int | wc -l` + echo "Total flows after vswitchd restart = " $total_flows_after_restart + test "${total_flows}" = "${total_flows_after_restart}" +]) OVN_CLEANUP([hv1]) AT_CLEANUP _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev