diff --git a/orchagent/aclorch.cpp b/orchagent/aclorch.cpp index c3a9f23ec78b..dbe2f0537984 100644 --- a/orchagent/aclorch.cpp +++ b/orchagent/aclorch.cpp @@ -3617,7 +3617,9 @@ bool AclOrch::removeAclRule(string table_id, string rule_id) auto rule = getAclRule(table_id, rule_id); if (!rule) { - return false; + SWSS_LOG_NOTICE("ACL rule [%s] in table [%s] already deleted", + rule_id.c_str(), table_id.c_str()); + return true; } if (rule->hasCounter()) diff --git a/tests/mock_tests/aclorch_ut.cpp b/tests/mock_tests/aclorch_ut.cpp index 295fed20baa6..11afa57313cd 100644 --- a/tests/mock_tests/aclorch_ut.cpp +++ b/tests/mock_tests/aclorch_ut.cpp @@ -1719,4 +1719,28 @@ namespace aclorch_test ASSERT_TRUE(orch->m_aclOrch->removeAclRule(rule->getTableId(), rule->getId())); } + TEST_F(AclOrchTest, deleteNonExistingRule) + { + string tableId = "acl_table"; + string ruleId = "acl_rule"; + + auto orch = createAclOrch(); + + // add acl table + auto kvfAclTable = deque({{ + tableId, + SET_COMMAND, + { + { ACL_TABLE_DESCRIPTION, "L3 table" }, + { ACL_TABLE_TYPE, TABLE_TYPE_L3 }, + { ACL_TABLE_STAGE, STAGE_INGRESS }, + { ACL_TABLE_PORTS, "1,2" } + } + }}); + + orch->doAclTableTask(kvfAclTable); + + // try to delete non existing acl rule + ASSERT_TRUE(orch->m_aclOrch->removeAclRule(tableId, ruleId)); + } } // namespace nsAclOrchTest