From a22bf07c0fb3c25ab54daa6635105335531ee431 Mon Sep 17 00:00:00 2001 From: Tamer Ahmed Date: Mon, 15 Jun 2026 09:21:45 -0700 Subject: [PATCH 1/2] [fdbsyncd]: Make VXLAN FDB delete idempotent Signed-off-by: Tamer Ahmed --- fdbsyncd/fdbsync.cpp | 2 +- tests/mock_tests/fdbsyncd/fdbsyncd_ut.cpp | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/fdbsyncd/fdbsync.cpp b/fdbsyncd/fdbsync.cpp index 9a5a51553f2..28e7a3930e3 100644 --- a/fdbsyncd/fdbsync.cpp +++ b/fdbsyncd/fdbsync.cpp @@ -889,7 +889,7 @@ void FdbSync::macDelVxlan(string key) macDelVxlanDB(key); m_mac.erase(key); } else { - SWSS_LOG_ERROR("DEL_KEY %s entry doesn't exist", key.c_str()); + SWSS_LOG_INFO("DEL_KEY %s ignored; entry is not present in VXLAN FDB cache", key.c_str()); } } diff --git a/tests/mock_tests/fdbsyncd/fdbsyncd_ut.cpp b/tests/mock_tests/fdbsyncd/fdbsyncd_ut.cpp index d60e97b93ae..d8de2487fa1 100644 --- a/tests/mock_tests/fdbsyncd/fdbsyncd_ut.cpp +++ b/tests/mock_tests/fdbsyncd/fdbsyncd_ut.cpp @@ -1554,8 +1554,12 @@ TEST_F(FdbSyncdEvpnMhTest, TestMacDelVxlan) // Now call macDelVxlan which should find and process the entry m_mockFdbSync.macDelVxlan(key); + ASSERT_EQ(m_mockFdbSync.m_mac.count(key), 0); + + // A later kernel delete for the same VXLAN FDB entry is expected after a local MAC wins. + m_mockFdbSync.macDelVxlan(key); + ASSERT_EQ(m_mockFdbSync.m_mac.count(key), 0); - ASSERT_TRUE(true); } TEST_F(FdbSyncdEvpnMhTest, TestMacDelVxlanEntryNHG) From 27a8d69a81f1e589f29d90491a6a0b5a023ee910 Mon Sep 17 00:00:00 2001 From: Tamer Ahmed Date: Mon, 15 Jun 2026 09:34:15 -0700 Subject: [PATCH 2/2] [fdbsyncd]: Address VXLAN delete review comments Signed-off-by: Tamer Ahmed --- fdbsyncd/fdbsync.cpp | 2 +- tests/mock_tests/fdbsyncd/fdbsyncd_ut.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fdbsyncd/fdbsync.cpp b/fdbsyncd/fdbsync.cpp index 28e7a3930e3..cfcb8bd8cf9 100644 --- a/fdbsyncd/fdbsync.cpp +++ b/fdbsyncd/fdbsync.cpp @@ -889,7 +889,7 @@ void FdbSync::macDelVxlan(string key) macDelVxlanDB(key); m_mac.erase(key); } else { - SWSS_LOG_INFO("DEL_KEY %s ignored; entry is not present in VXLAN FDB cache", key.c_str()); + SWSS_LOG_DEBUG("DEL_KEY %s ignored; entry is not present in VXLAN FDB cache", key.c_str()); } } diff --git a/tests/mock_tests/fdbsyncd/fdbsyncd_ut.cpp b/tests/mock_tests/fdbsyncd/fdbsyncd_ut.cpp index d8de2487fa1..0c777380e13 100644 --- a/tests/mock_tests/fdbsyncd/fdbsyncd_ut.cpp +++ b/tests/mock_tests/fdbsyncd/fdbsyncd_ut.cpp @@ -1554,11 +1554,11 @@ TEST_F(FdbSyncdEvpnMhTest, TestMacDelVxlan) // Now call macDelVxlan which should find and process the entry m_mockFdbSync.macDelVxlan(key); - ASSERT_EQ(m_mockFdbSync.m_mac.count(key), 0); + ASSERT_EQ(0u, m_mockFdbSync.m_mac.count(key)); // A later kernel delete for the same VXLAN FDB entry is expected after a local MAC wins. m_mockFdbSync.macDelVxlan(key); - ASSERT_EQ(m_mockFdbSync.m_mac.count(key), 0); + ASSERT_EQ(0u, m_mockFdbSync.m_mac.count(key)); }