refactor: update local node

This commit is contained in:
2025-10-20 21:35:08 +02:00
parent 37a68e26d8
commit daae29dd3f
2 changed files with 20 additions and 23 deletions

View File

@@ -20,7 +20,7 @@ public:
void removeDeadNodes(); void removeDeadNodes();
void printMemberList(); void printMemberList();
const std::map<String, NodeInfo>& getMemberList() const { return *ctx.memberList; } const std::map<String, NodeInfo>& getMemberList() const { return *ctx.memberList; }
void updateLocalNodeResources(); void updateLocalNodeResources(NodeInfo& node);
void heartbeatTaskCallback(); void heartbeatTaskCallback();
void updateAllMembersInfoTaskCallback(); void updateAllMembersInfoTaskCallback();
void broadcastNodeUpdate(); void broadcastNodeUpdate();

View File

@@ -380,10 +380,7 @@ void ClusterManager::heartbeatTaskCallback() {
auto it = memberList.find(ctx.hostname); auto it = memberList.find(ctx.hostname);
if (it != memberList.end()) { if (it != memberList.end()) {
NodeInfo& node = it->second; NodeInfo& node = it->second;
node.lastSeen = millis(); updateLocalNodeResources(node);
node.status = NodeInfo::ACTIVE;
node.uptime = millis(); // Update uptime
updateLocalNodeResources();
addOrUpdateNode(ctx.hostname, ctx.localIP); addOrUpdateNode(ctx.hostname, ctx.localIP);
} }
@@ -481,23 +478,23 @@ void ClusterManager::printMemberList() {
} }
} }
void ClusterManager::updateLocalNodeResources() { void ClusterManager::updateLocalNodeResources(NodeInfo& node) {
auto& memberList = *ctx.memberList; // Update node status and timing
auto it = memberList.find(ctx.hostname); node.lastSeen = millis();
if (it != memberList.end()) { node.status = NodeInfo::ACTIVE;
NodeInfo& node = it->second; node.uptime = millis();
uint32_t freeHeap = ESP.getFreeHeap();
node.resources.freeHeap = freeHeap;
node.resources.chipId = ESP.getChipId();
node.resources.sdkVersion = String(ESP.getSdkVersion());
node.resources.cpuFreqMHz = ESP.getCpuFreqMHz();
node.resources.flashChipSize = ESP.getFlashChipSize();
// Log memory warnings if heap is getting low uint32_t freeHeap = ESP.getFreeHeap();
if (freeHeap < ctx.config.low_memory_threshold_bytes) { node.resources.freeHeap = freeHeap;
LOG_WARN("Cluster", "Low memory warning: " + String(freeHeap) + " bytes free"); node.resources.chipId = ESP.getChipId();
} else if (freeHeap < ctx.config.critical_memory_threshold_bytes) { node.resources.sdkVersion = String(ESP.getSdkVersion());
LOG_ERROR("Cluster", "Critical memory warning: " + String(freeHeap) + " bytes free"); node.resources.cpuFreqMHz = ESP.getCpuFreqMHz();
} node.resources.flashChipSize = ESP.getFlashChipSize();
// Log memory warnings if heap is getting low
if (freeHeap < ctx.config.low_memory_threshold_bytes) {
LOG_WARN("Cluster", "Low memory warning: " + String(freeHeap) + " bytes free");
} else if (freeHeap < ctx.config.critical_memory_threshold_bytes) {
LOG_ERROR("Cluster", "Critical memory warning: " + String(freeHeap) + " bytes free");
} }
} }