You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is seen once but it is worth to record the analysis.
Below message is seen in the log: syncd vl_api_sw_interface_event_t_handler:632: vpp cannot get interface name for sw index 25, which means interface is not found in interface_name_by_sw_index.
When an interface is up, vpp sends the interface-up event to the client (SONiC), which will be stored in a message queue. If it happens that refresh_interfaces_list is called before the event is picked up by vpp event polling thread (SwitchStateBase::vppProcessEvents is the handler), a race condition will happen causing this problem. Here are the details:
the interface_name_by_sw_index will be cleared first in api_sw_interface_dump
sending SW_INTERFACE_DUMP and PING API requests to vpp to get interface dump
calling W to process the responses from the message queue. If the interface up event is already received and currently stored in the queue, vl_api_sw_interface_event_t_handler callback will be invoked when processing the event. Because interface_name_by_sw_index is already cleared, we will end up the error message "vpp cannot get interface name".
Potential solution: call vpp_sync_for_events first in refresh_interfaces_list. This will process all the events in the queue. Ultimate solution is changing to some async model, which requires some investigation.
The text was updated successfully, but these errors were encountered:
This is seen once but it is worth to record the analysis.
The text was updated successfully, but these errors were encountered: