Skip to content

Commit

Permalink
Fixed set mtu for deleted subintf due to late notification (#2571)
Browse files Browse the repository at this point in the history
* Fixed set mtu for deleted subintf due to late notification
  • Loading branch information
EdenGri authored Dec 28, 2022
1 parent a443945 commit 7891e78
Showing 1 changed file with 13 additions and 2 deletions.
15 changes: 13 additions & 2 deletions cfgmgr/intfmgr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -447,8 +447,19 @@ std::string IntfMgr::setHostSubIntfMtu(const string &alias, const string &mtu, c
}
SWSS_LOG_INFO("subintf %s active mtu: %s", alias.c_str(), subifMtu.c_str());
cmd << IP_CMD " link set " << shellquote(alias) << " mtu " << shellquote(subifMtu);
EXEC_WITH_ERROR_THROW(cmd.str(), res);
std::string cmd_str = cmd.str();
int ret = swss::exec(cmd_str, res);

if (ret && !isIntfStateOk(alias))
{
// Can happen when a SET notification on the PORT_TABLE in the State DB
// followed by a new DEL notification that send by portmgrd
SWSS_LOG_WARN("Setting mtu to %s netdev failed with cmd:%s, rc:%d, error:%s", alias.c_str(), cmd_str.c_str(), ret, res.c_str());
}
else if (ret)
{
throw runtime_error(cmd_str + " : " + res);
}
return subifMtu;
}

Expand All @@ -468,7 +479,7 @@ void IntfMgr::updateSubIntfAdminStatus(const string &alias, const string &admin)
continue;
}
std::vector<FieldValueTuple> fvVector;
string subintf_admin = setHostSubIntfAdminStatus(intf, m_subIntfList[intf].adminStatus, admin);
string subintf_admin = setHostSubIntfAdminStatus(intf, m_subIntfList[intf].adminStatus, admin);
m_subIntfList[intf].currAdminStatus = subintf_admin;
FieldValueTuple fvTuple("admin_status", subintf_admin);
fvVector.push_back(fvTuple);
Expand Down

0 comments on commit 7891e78

Please sign in to comment.