From 58f97dc20503a0542fa86162f5cd7e8d5b8e0445 Mon Sep 17 00:00:00 2001 From: Jeffrey Leung Date: Wed, 19 Feb 2025 16:52:31 -0800 Subject: [PATCH] Add micrologs for connectivity delta tracking Summary: Add micrologs for tracking connectivity delta comparisons and cases. Reviewed By: zechengh09 Differential Revision: D69838593 Privacy Context Container: L1125642 fbshipit-source-id: 4593cd46c6316aaac323e5c872087055d38ca027 --- fboss/agent/FabricConnectivityManager.cpp | 15 +++++++++++++++ fboss/agent/hw/sai/switch/npu/SaiSwitch.cpp | 11 +++++++++++ 2 files changed, 26 insertions(+) diff --git a/fboss/agent/FabricConnectivityManager.cpp b/fboss/agent/FabricConnectivityManager.cpp index 255a32f04ce48..d95f13e43852f 100644 --- a/fboss/agent/FabricConnectivityManager.cpp +++ b/fboss/agent/FabricConnectivityManager.cpp @@ -390,6 +390,8 @@ FabricConnectivityManager::processConnectivityInfoForPort( // actual{switchID, portID} == expected{switchID, portID} iter->second.switchName() = iter->second.expectedSwitchName().value(); iter->second.portName() = iter->second.expectedPortName().value(); + XLOG(DBG5) << "Cabling is correct on port ID " + << static_cast(portId); } else if (*iter->second.isAttached()) { // Attached but miscabled: // - Connected to expected Switch but on wrong port @@ -407,17 +409,30 @@ FabricConnectivityManager::processConnectivityInfoForPort( if (portName.has_value()) { iter->second.portName() = portName.value(); } + XLOG(DBG5) << "Attached but miscabled on port ID " + << static_cast(portId) << ". Switch name: " + << iter->second.switchName().value_or("unknown") + << " Port name: " + << iter->second.portName().value_or("unknown"); } } else { + XLOG(DBG2) << "Adding new entry for port ID " << static_cast(portId); iter = currentNeighborConnectivity_.insert({portId, hwEndpoint}).first; } + if (!old || (old != iter->second)) { + XLOG(DBG5) << "Connectivity changed on port ID " << static_cast(portId) + << ". Processing delta."; delta = multiswitch::FabricConnectivityDelta(); if (old.has_value()) { delta->oldConnectivity() = *old; } delta->newConnectivity() = iter->second; + } else { + XLOG(DBG5) << "No connectivity change on port ID " + << static_cast(portId) << "."; } + return delta; } diff --git a/fboss/agent/hw/sai/switch/npu/SaiSwitch.cpp b/fboss/agent/hw/sai/switch/npu/SaiSwitch.cpp index 9b85bcce8e19c..14eaaae330e56 100644 --- a/fboss/agent/hw/sai/switch/npu/SaiSwitch.cpp +++ b/fboss/agent/hw/sai/switch/npu/SaiSwitch.cpp @@ -69,15 +69,24 @@ void SaiSwitch::updateStatsImpl() { auto delta = fabricConnectivityManager_->processConnectivityInfoForPort( portsIter->second.portID, *endpointOpt); if (delta) { + XLOG(DBG5) << "Connectivity delta found for port ID " + << portsIter->second.portID; connectivityDelta.insert({portsIter->second.portID, *delta}); + } else { + XLOG(DBG5) << "No connectivity delta for port ID " + << portsIter->second.portID; } if (fabricConnectivityManager_->isConnectivityInfoMissing( portsIter->second.portID)) { missingCount++; + XLOG(DBG5) << "Connectivity missing for port ID " + << portsIter->second.portID; } if (fabricConnectivityManager_->isConnectivityInfoMismatch( portsIter->second.portID)) { mismatchCount++; + XLOG(DBG5) << "Connectivity mismatch for port ID " + << portsIter->second.portID; } } managerTable_->portManager().updateStats( @@ -138,6 +147,8 @@ void SaiSwitch::updateStatsImpl() { reportAsymmetricTopology(); reportInterPortGroupCableSkew(); if (!connectivityDelta.empty()) { + XLOG(DBG2) + << "Connectivity delta is not empty. Sending callback to SwSwitch"; linkConnectivityChangeBottomHalfEventBase_.runInFbossEventBaseThread( [this, connectivityDelta = std::move(connectivityDelta)] { linkConnectivityChanged(connectivityDelta);