[Nexthop] Dynamic FDB entries should be skipped during warm boot if aged out in h/w - #1528
Open
vvasavada-nexthop wants to merge 1 commit into
Open
Conversation
… h/w Signed-off-by: Vishrant Vasavada <vvasavada@nexthop.ai>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pre-submission checklist
pip install -r requirements-dev.txt && pre-commit installpre-commit runSummary
Warm boot crashed the hw agent with SIGABRT failing
warm_boot.AgentMacLearningAndNeighborResolutionTest/1.learnMacProgramNeighborsAndAgeMac:The warm boot adapter-key file is treated as faithful snapshot of h/w, however, h/w deletes dynamic FDB entries on its own. Every other FDB path already tolerates this race -
ignoreMissingInHwOnDelete_inSaiObject::remove(), theITEM_NOT_FOUNDcatch inSaiFdbManager::changeMac()/createSaiObject(), andremoveUnclaimedDynanicEntries(), which exists to discard exactly these stale entries but runs frominitialStateApplied(), i.e. afterreload()has already killed the process. Reload was the only path that treated vanished dynamic FDB entry as fatal.We fix this by:
SaiObjectMayBeMissingInHwtrait inapi/Traits.h(default false), specialized true forSaiFdbTraitsinapi/FdbApi.h.SaiObjectStore::reload()goes through a newgetObjectIfInHw()which catchesSaiApiError, rethrows if the error is anything butSAI_STATUS_ITEM_NOT_FOUND, otherwise skips with warning log, for the cases where trait evaluates to true.Test Plan