It is even harder to reproduce the new failure, rarer than the flow-dumps one. Just ran into this once in my life...
More importantly, the flow-dumps pkt counts are sync'ed in the failed case. >From my understanding, this new issue, relates to reading stats from netdev-dummy, which is different area from this fix. So, this change makes sense to me. I'll apply it first, On Fri, Apr 25, 2014 at 8:10 AM, Alex Wang <al...@nicira.com> wrote: > found this in the morning, will keep investigating, > > > ./learn.at:362: (ovs-ofctl dump-ports br0 2; ovs-ofctl dump-ports br0 3) > | sed 's/ (xid=0x[0-9a-fA-F]*)//' > > --- - 2014-04-25 01:25:43.022048477 -0700 > > +++ /root/openvswitch/tests/testsuite.dir/at-groups/328/stdout 2014-04-25 > 01:25:43.017711899 -0700 > > @@ -1,7 +1,7 @@ > > OFPST_PORT reply: 1 ports > > port 2: rx pkts=0, bytes=0, drop=0, errs=0, frame=0, over=0, crc=0 > > - tx pkts=2, bytes=120, drop=0, errs=0, coll=0 > > + tx pkts=6, bytes=360, drop=0, errs=0, coll=0 > > OFPST_PORT reply: 1 ports > > port 3: rx pkts=0, bytes=0, drop=0, errs=0, frame=0, over=0, crc=0 > > - tx pkts=18, bytes=1080, drop=0, errs=0, coll=0 > > + tx pkts=14, bytes=840, drop=0, errs=0, coll=0 > > > On Thu, Apr 24, 2014 at 10:34 PM, Alex Wang <al...@nicira.com> wrote: > >> 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