On 5/27/21 12:29 PM, Jianbo Liu wrote: > There is a race condidtion between purger and handler in dpif-netlink. > Handler may create new ukey and install it while executing 'ovs-appctl > revalidator/purge' command. However, before handler calls > transition_ukey() in handle_upcalls(), purger may get this ukey from > umap, then evict and delete it. This will trigger ovs_abort in > transition_ukey() for handler because it is trying to set state to > EVICTED or OPERATIONAL, but ukey is already in DELETED state. > To fix this issue, purger must not delete ukey in VISIBLE state.
Hi. This is not a good thing to trigger abort(), but "purge" means "purge". And, AFAIU, most of ukeys are visible. This is a purely debug interface that was introduced to test functionality of OVS and should not be used in production environment. The fact that "purge" doesn't remove visible ukeys, in my opinion, just makes the appctl "revalidator/purge" useless. Can we replace abort() with rate-limited error message for this scenario instead to avoid process termination? BTW, how did you catch this? Is it reproducible with system tests? Best regards, Ilya Maximets. _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
