Return error to agent if an entry already existed in the flow table
It is logically possible that agent and datapath are trying to create
same flow simultaneously. If it so happens that agent gets the entry
that datapath created and tries to update that entry assuming that the
entry was created by it, then the hold count will never be compensated
by a corresponding acted count, and hence vrouter's perception of the
number of active hold entries can go wrong. To fix this, return error
to agent if the flow it tried to create already existed.
Other fixes:
. If agent is changing the flow state to 'hold' from any other state,
update the hold count entry.
. Export the hold count statistics to 'flow' utility
Reviewed: https:/ /review. opencontrail. org/8881 github. org/Juniper/ contrail- vrouter/ commit/ 3dbe5b528411add 85b8ebcca356d99 8e7e854fde
Committed: http://
Submitter: Zuul
Branch: R1.10
commit 3dbe5b528411add 85b8ebcca356d99 8e7e854fde
Author: Anand H. Krishnan <email address hidden>
Date: Fri Apr 3 16:16:03 2015 +0530
Return error to agent if an entry already existed in the flow table
It is logically possible that agent and datapath are trying to create
same flow simultaneously. If it so happens that agent gets the entry
that datapath created and tries to update that entry assuming that the
entry was created by it, then the hold count will never be compensated
by a corresponding acted count, and hence vrouter's perception of the
number of active hold entries can go wrong. To fix this, return error
to agent if the flow it tried to create already existed.
Other fixes:
. If agent is changing the flow state to 'hold' from any other state,
update the hold count entry.
. Export the hold count statistics to 'flow' utility
Change-Id: I24087baa5bf853 b863f34e1b55882 927d9114349
Partial-BUG: #1439069