{"push_id":895048356,"size":1,"distinct_size":1,"ref":"refs/heads/R2.20","head":"7e8b3550ba4ba410e95f18e9df5650f9ab38b626","before":"1a5c433d8b40bbfbb6497d7fdd0a699bd95a40cc","commits":[{"sha":"7e8b3550ba4ba410e95f18e9df5650f9ab38b626","author":{"email":"4a1f26f01843ac3e531391a78091bbd0c8ad51d6@juniper.net","name":"Anand H. Krishnan"},"message":"Before initiating eviction, set M(odified) flag\n\nCurrently, before evicting the forward flow, we get to the reverse\nflow and mark it for eviction. Then we go on to mark forward flow\nfor eviction and schedule the eviction at a later time. It is in\nthis deferred functionality that is scheduled that the forward and\nthe reverse flow gets evicted. We set the M(odified) flag at the\ntime of 'eviction-marking' in each of the flow entries so that\nsubsequent changes to the flow entry is not honoured.\n\nIt is possible that the forward flow can undergo a change in which\nits reverse flow is unlinked (or changed) while the reverse flow\nwas in the process of getting marked for eviction. If that happens,\nat the time of actual eviction, the deferred call will not be able\nto find the reverse flow from the forward flow and the reverse flow\nwill remain in the 'Eviction-Candidate' state forever.\n\nTo fix this race, mark the forward flow as M(odified) before\ninitiating the eviction process, making sure that the mapping between\nthe forward and the reverse flow is untouched once eviction process\nis initiated.\n\nChange-Id: I088ac3abd5c3bfc7bf77efc697bbe1386254358f\nCloses-BUG: 1521496","distinct":true,"url":"https://api.github.com/repos/Juniper/contrail-vrouter/commits/7e8b3550ba4ba410e95f18e9df5650f9ab38b626"}]}