i'll kick an overnight run on "learning action - self-modifying flow with idle_timeout".~ (seq 10000). if it survives, tmr morning, i'll ack it~~
On Thu, Apr 24, 2014 at 10:26 PM, Joe Stringer <joestrin...@nicira.com>wrote: > revalidate_ukey() had a bug where it would update the ukey->stats even > if it decided not to push stats (as an optimisation). ukey->stats should > only be updated when those stats are pushed. > > This bug would arise in the following situation: > * A flow has been dumped before. > * The flow needs to be revalidated. > * The flow is low-throughput. > * The flow has new statistics to push. > > Such cases rely on flow deletion to update the stats. However, that code > pushes the delta between the ukey->stats and the final flow dump. If the > ukey stats cache is updated without the stats being pushed, those stats > would be lost. > > This caused intermittent testsuite failures on "learning action - > self-modifying flow with idle_timeout". Introduced by 698ffe3623f1b630ae > "revalidator: Only revalidate high-throughput flows." > > Bug #1238927. > > Signed-off-by: Joe Stringer <joestrin...@nicira.com> > --- > ofproto/ofproto-dpif-upcall.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c > index 84afc56..5871772 100644 > --- a/ofproto/ofproto-dpif-upcall.c > +++ b/ofproto/ofproto-dpif-upcall.c > @@ -1245,7 +1245,6 @@ revalidate_ukey(struct udpif *udpif, struct > udpif_key *ukey, > push.n_bytes = stats->n_bytes > ukey->stats.n_bytes > ? stats->n_bytes - ukey->stats.n_bytes > : 0; > - ukey->stats = *stats; > > if (!ukey->flow_exists) { > /* Don't bother revalidating if the flow was already deleted. */ > @@ -1258,6 +1257,8 @@ revalidate_ukey(struct udpif *udpif, struct > udpif_key *ukey, > goto exit; > } > > + /* We will push the stats, so update the ukey stats cache. */ > + ukey->stats = *stats; > if (!push.n_packets && !udpif->need_revalidate) { > ok = true; > goto exit; > -- > 1.7.10.4 > >
_______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev