From 37a68e26d8b44b7372629a128799a8d58bde91ae Mon Sep 17 00:00:00 2001 From: 0x1d Date: Mon, 20 Oct 2025 21:21:02 +0200 Subject: [PATCH] refactor: remove unused and obsolet stuff --- include/spore/core/ClusterManager.h | 1 - include/spore/services/MonitoringService.h | 6 -- src/spore/core/ClusterManager.cpp | 111 --------------------- src/spore/services/MonitoringService.cpp | 19 ---- src/spore/services/NodeService.cpp | 2 +- 5 files changed, 1 insertion(+), 138 deletions(-) diff --git a/include/spore/core/ClusterManager.h b/include/spore/core/ClusterManager.h index 5c7ff86..c93fbb2 100644 --- a/include/spore/core/ClusterManager.h +++ b/include/spore/core/ClusterManager.h @@ -20,7 +20,6 @@ public: void removeDeadNodes(); void printMemberList(); const std::map& getMemberList() const { return *ctx.memberList; } - void fetchNodeInfo(const IPAddress& ip); void updateLocalNodeResources(); void heartbeatTaskCallback(); void updateAllMembersInfoTaskCallback(); diff --git a/include/spore/services/MonitoringService.h b/include/spore/services/MonitoringService.h index 8c2901a..91f62f8 100644 --- a/include/spore/services/MonitoringService.h +++ b/include/spore/services/MonitoringService.h @@ -15,17 +15,12 @@ public: // CPU information float currentCpuUsage; float averageCpuUsage; - float maxCpuUsage; - float minCpuUsage; unsigned long measurementCount; bool isMeasuring; // Memory information size_t freeHeap; size_t totalHeap; - size_t minFreeHeap; - size_t maxAllocHeap; - size_t heapFragmentation; // Filesystem information size_t totalBytes; @@ -45,7 +40,6 @@ private: void handleResourcesRequest(AsyncWebServerRequest* request); // Helper methods - size_t calculateHeapFragmentation() const; void getFilesystemInfo(size_t& totalBytes, size_t& usedBytes) const; CpuUsage& cpuUsage; diff --git a/src/spore/core/ClusterManager.cpp b/src/spore/core/ClusterManager.cpp index 0bbf5f2..1d2360c 100644 --- a/src/spore/core/ClusterManager.cpp +++ b/src/spore/core/ClusterManager.cpp @@ -357,8 +357,6 @@ void ClusterManager::addOrUpdateNode(const String& nodeHost, IPAddress nodeIP) { memberlistChanged = true; } it->second.lastSeen = millis(); - // Note: Other fields like latency, uptime, labels, etc. are preserved - //fetchNodeInfo(nodeIP); // Do not fetch here, handled by periodic task } else { // Add new node NodeInfo newNode; @@ -369,7 +367,6 @@ void ClusterManager::addOrUpdateNode(const String& nodeHost, IPAddress nodeIP) { memberList[nodeHost] = newNode; memberlistChanged = true; LOG_INFO("Cluster", "Added node: " + nodeHost + " @ " + newNode.ip.toString() + " | Status: " + statusToStr(newNode.status) + " | last update: 0"); - //fetchNodeInfo(nodeIP); // Do not fetch here, handled by periodic task } // Fire event if memberlist changed @@ -378,114 +375,6 @@ void ClusterManager::addOrUpdateNode(const String& nodeHost, IPAddress nodeIP) { } } -// unused http client to fetch complete node info -void ClusterManager::fetchNodeInfo(const IPAddress& ip) { - if(ip == ctx.localIP) { - LOG_DEBUG("Cluster", "Skipping fetch for local node"); - return; - } - - unsigned long requestStart = millis(); - HTTPClient http; - WiFiClient client; - String url = "http://" + ip.toString() + ClusterProtocol::API_NODE_STATUS; - - // Use RAII pattern to ensure http.end() is always called - bool httpInitialized = false; - bool success = false; - - httpInitialized = http.begin(client, url); - if (!httpInitialized) { - LOG_ERROR("Cluster", "Failed to initialize HTTP client for " + ip.toString()); - return; - } - - // Set timeout to prevent hanging - http.setTimeout(5000); // 5 second timeout - - int httpCode = http.GET(); - unsigned long requestEnd = millis(); - unsigned long requestDuration = requestEnd - requestStart; - - if (httpCode == 200) { - String payload = http.getString(); - - // Use stack-allocated JsonDocument with proper cleanup - JsonDocument doc; - DeserializationError err = deserializeJson(doc, payload); - - if (!err) { - auto& memberList = *ctx.memberList; - // Still need to iterate since we're searching by IP, not hostname - for (auto& pair : memberList) { - NodeInfo& node = pair.second; - if (node.ip == ip) { - // Update resources efficiently - node.resources.freeHeap = doc["freeHeap"]; - node.resources.chipId = doc["chipId"]; - node.resources.sdkVersion = (const char*)doc["sdkVersion"]; - node.resources.cpuFreqMHz = doc["cpuFreqMHz"]; - node.resources.flashChipSize = doc["flashChipSize"]; - node.status = NodeInfo::ACTIVE; - node.latency = requestDuration; - node.lastSeen = millis(); - - // Clear and rebuild endpoints efficiently - node.endpoints.clear(); - node.endpoints.reserve(10); // Pre-allocate to avoid reallocations - - if (doc["api"].is()) { - JsonArray apiArr = doc["api"].as(); - for (JsonObject apiObj : apiArr) { - // Use const char* to avoid String copies - const char* uri = apiObj["uri"]; - int method = apiObj["method"]; - - // Create basic EndpointInfo without params for cluster nodes - EndpointInfo endpoint; - endpoint.uri = uri; // String assignment is more efficient than construction - endpoint.method = method; - endpoint.isLocal = false; - endpoint.serviceName = "remote"; - node.endpoints.push_back(std::move(endpoint)); - } - } - - // Parse labels efficiently - node.labels.clear(); - if (doc["labels"].is()) { - JsonObject labelsObj = doc["labels"].as(); - for (JsonPair kvp : labelsObj) { - // Use const char* to avoid String copies - const char* key = kvp.key().c_str(); - const char* value = labelsObj[kvp.key()]; - node.labels[key] = value; - } - } - - LOG_DEBUG("Cluster", "Fetched info for node: " + node.hostname + " @ " + ip.toString()); - success = true; - break; - } - } - } else { - LOG_ERROR("Cluster", "JSON parse error for node @ " + ip.toString() + ": " + String(err.c_str())); - } - } else { - LOG_ERROR("Cluster", "Failed to fetch info for node @ " + ip.toString() + ", HTTP code: " + String(httpCode)); - } - - // Always ensure HTTP client is properly closed - if (httpInitialized) { - http.end(); - } - - // Log success/failure for debugging - if (!success) { - LOG_DEBUG("Cluster", "Failed to update node info for " + ip.toString()); - } -} - void ClusterManager::heartbeatTaskCallback() { auto& memberList = *ctx.memberList; auto it = memberList.find(ctx.hostname); diff --git a/src/spore/services/MonitoringService.cpp b/src/spore/services/MonitoringService.cpp index 53a62c2..c6a466b 100644 --- a/src/spore/services/MonitoringService.cpp +++ b/src/spore/services/MonitoringService.cpp @@ -25,17 +25,12 @@ MonitoringService::SystemResources MonitoringService::getSystemResources() const // CPU information resources.currentCpuUsage = cpuUsage.getCpuUsage(); resources.averageCpuUsage = cpuUsage.getAverageCpuUsage(); - resources.maxCpuUsage = cpuUsage.getMaxCpuUsage(); - resources.minCpuUsage = cpuUsage.getMinCpuUsage(); resources.measurementCount = cpuUsage.getMeasurementCount(); resources.isMeasuring = cpuUsage.isMeasuring(); // Memory information - ESP8266 compatible resources.freeHeap = ESP.getFreeHeap(); resources.totalHeap = 81920; // ESP8266 has ~80KB RAM - resources.minFreeHeap = 0; // Not available on ESP8266 - resources.maxAllocHeap = 0; // Not available on ESP8266 - resources.heapFragmentation = calculateHeapFragmentation(); // Filesystem information getFilesystemInfo(resources.totalBytes, resources.usedBytes); @@ -59,8 +54,6 @@ void MonitoringService::handleResourcesRequest(AsyncWebServerRequest* request) { JsonObject cpu = doc["cpu"].to(); cpu["current_usage"] = resources.currentCpuUsage; cpu["average_usage"] = resources.averageCpuUsage; - cpu["max_usage"] = resources.maxCpuUsage; - cpu["min_usage"] = resources.minCpuUsage; cpu["measurement_count"] = resources.measurementCount; cpu["is_measuring"] = resources.isMeasuring; @@ -68,9 +61,6 @@ void MonitoringService::handleResourcesRequest(AsyncWebServerRequest* request) { JsonObject memory = doc["memory"].to(); memory["free_heap"] = resources.freeHeap; memory["total_heap"] = resources.totalHeap; - memory["min_free_heap"] = resources.minFreeHeap; - memory["max_alloc_heap"] = resources.maxAllocHeap; - memory["heap_fragmentation"] = resources.heapFragmentation; memory["heap_usage_percent"] = resources.totalHeap > 0 ? (float)(resources.totalHeap - resources.freeHeap) / (float)resources.totalHeap * 100.0f : 0.0f; @@ -94,15 +84,6 @@ void MonitoringService::handleResourcesRequest(AsyncWebServerRequest* request) { request->send(200, "application/json", json); } -size_t MonitoringService::calculateHeapFragmentation() const { - size_t freeHeap = ESP.getFreeHeap(); - size_t maxAllocHeap = 0; // Not available on ESP8266 - - if (maxAllocHeap == 0) return 0; - - // Calculate fragmentation as percentage of free heap that can't be allocated in one block - return (freeHeap - maxAllocHeap) * 100 / freeHeap; -} void MonitoringService::getFilesystemInfo(size_t& totalBytes, size_t& usedBytes) const { totalBytes = 0; diff --git a/src/spore/services/NodeService.cpp b/src/spore/services/NodeService.cpp index 473fcdb..5e2afa8 100644 --- a/src/spore/services/NodeService.cpp +++ b/src/spore/services/NodeService.cpp @@ -116,7 +116,7 @@ void NodeService::handleUpdateUpload(AsyncWebServerRequest* request, const Strin LOG_ERROR("OTA", "Update failed: not enough space"); Update.printError(Serial); AsyncWebServerResponse* response = request->beginResponse(500, "application/json", - "{\"status\": \"FAIL\"}"); + "{\"status\": \"FAIL\", \"message\": \"Update failed: not enough space\"}"); response->addHeader("Connection", "close"); request->send(response); return;