[caclmgrd] Skip empty ACL tables#370
Merged
Merged
Conversation
Signed-off-by: Nazarii Hnydyn <nazariig@nvidia.com>
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
Signed-off-by: Nazarii Hnydyn <nazariig@nvidia.com>
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
dgsudharsan
approved these changes
Apr 1, 2026
volodymyrsamotiy
approved these changes
Apr 10, 2026
Contributor
Author
|
@vmittal-msft this is a simple fix. Can you please help to merge? |
liat-grozovik
approved these changes
May 6, 2026
|
Cherry-pick PR to 202511: #381 |
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.
This PR propagates a fix for timing issue caused by
caclmgrdprocessing of ACL tables during Config DB record removal operation.Evidence from code
caclmgrddoesConfigDBConnector.get_table()is implemented asThis is a two-step read:
KEYS ACL_TABLE|*)HGETALLIf a key is deleted/changed between step 1 and step 2,
hgetallcan return{}.Then
table_dataexists as an empty map in_tables_db_info, andtable_data["type"]throwsKeyError.So missing
typedoes NOT require field-only deletion; plain key deletion racing withget_table()is enough.Also field-only deletion is possible in the stack:
set_entry()can remove extra fields withHDELwhile keeping the record key alive.Evidence from pytest
The log shows rapid table deletes:
That high churn exactly matches a race window for the non-atomic
get_table()read incaclmgrd.So missing
typecan happen via:HDELupdatesKEYS+HGETALLsnapshot collectionSYSLOG:
A picture of a cute animal (not mandatory but encouraged)