From 99e7ed4809e8f3560ef398092f371c59374e549a Mon Sep 17 00:00:00 2001 From: Patrick Balsiger Date: Wed, 1 Oct 2025 20:45:55 +0200 Subject: [PATCH] feat: do not store each infos of each node --- src/spore/core/ClusterManager.cpp | 16 ++-------------- src/spore/services/ClusterService.cpp | 5 ----- test/http-cluster-broadcast-color.js | 2 +- test/ws-cluster-broadcast-color.js | 2 +- test/ws-cluster-broadcast-rainbow.js | 2 +- test/ws-color-client.js | 2 +- 6 files changed, 6 insertions(+), 23 deletions(-) diff --git a/src/spore/core/ClusterManager.cpp b/src/spore/core/ClusterManager.cpp index e86982e..5d7999b 100644 --- a/src/spore/core/ClusterManager.cpp +++ b/src/spore/core/ClusterManager.cpp @@ -122,11 +122,6 @@ void ClusterManager::onDiscovery(const char* /*msg*/) { void ClusterManager::onHeartbeat(const char* /*msg*/) { JsonDocument doc; - doc["freeHeap"] = ESP.getFreeHeap(); - doc["chipId"] = ESP.getChipId(); - doc["sdkVersion"] = ESP.getSdkVersion(); - doc["cpuFreqMHz"] = ESP.getCpuFreqMHz(); - doc["flashChipSize"] = ESP.getFlashChipSize(); if (ctx.memberList) { auto it = ctx.memberList->find(ctx.hostname); @@ -178,14 +173,6 @@ void ClusterManager::onNodeInfo(const char* msg) { auto it = memberList.find(nodeHost); if (it != memberList.end()) { NodeInfo& node = it->second; - node.resources.freeHeap = doc["freeHeap"] | node.resources.freeHeap; - node.resources.chipId = doc["chipId"] | node.resources.chipId; - { - const char* sdk = doc["sdkVersion"] | node.resources.sdkVersion.c_str(); - node.resources.sdkVersion = sdk ? String(sdk) : node.resources.sdkVersion; - } - node.resources.cpuFreqMHz = doc["cpuFreqMHz"] | node.resources.cpuFreqMHz; - node.resources.flashChipSize = doc["flashChipSize"] | node.resources.flashChipSize; node.status = NodeInfo::ACTIVE; unsigned long now = millis(); node.lastSeen = now; @@ -277,6 +264,7 @@ void ClusterManager::addOrUpdateNode(const String& nodeHost, IPAddress nodeIP) { //fetchNodeInfo(nodeIP); // Do not fetch here, handled by periodic task } +// 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"); @@ -392,7 +380,7 @@ void ClusterManager::heartbeatTaskCallback() { node.lastSeen = millis(); node.status = NodeInfo::ACTIVE; updateLocalNodeResources(); - ctx.fire("node_discovered", &node); + addOrUpdateNode(ctx.hostname, ctx.localIP); } // Broadcast heartbeat so peers can respond with their node info diff --git a/src/spore/services/ClusterService.cpp b/src/spore/services/ClusterService.cpp index d9dd43d..f18f4c6 100644 --- a/src/spore/services/ClusterService.cpp +++ b/src/spore/services/ClusterService.cpp @@ -44,11 +44,6 @@ void ClusterService::handleMembersRequest(AsyncWebServerRequest* request) { obj["lastSeen"] = node.lastSeen; obj["latency"] = node.latency; obj["status"] = statusToStr(node.status); - obj["resources"]["freeHeap"] = node.resources.freeHeap; - obj["resources"]["chipId"] = node.resources.chipId; - obj["resources"]["sdkVersion"] = node.resources.sdkVersion; - obj["resources"]["cpuFreqMHz"] = node.resources.cpuFreqMHz; - obj["resources"]["flashChipSize"] = node.resources.flashChipSize; // Add labels if present if (!node.labels.empty()) { diff --git a/test/http-cluster-broadcast-color.js b/test/http-cluster-broadcast-color.js index 65d4c57..9c8e33f 100644 --- a/test/http-cluster-broadcast-color.js +++ b/test/http-cluster-broadcast-color.js @@ -44,7 +44,7 @@ console.log(`Broadcasting color changes to http://${host}/api/cluster/event ...` setInterval(() => { const color = colors[idx % colors.length]; idx++; - const payload = { color, brightness: 128 }; + const payload = { color, brightness: 80 }; console.log('Broadcasting color:', payload); postClusterEvent('api/neopattern/color', payload); }, 5000); diff --git a/test/ws-cluster-broadcast-color.js b/test/ws-cluster-broadcast-color.js index 6e0185a..a5d7385 100644 --- a/test/ws-cluster-broadcast-color.js +++ b/test/ws-cluster-broadcast-color.js @@ -15,7 +15,7 @@ ws.on('open', () => { setInterval(() => { const color = colors[idx % colors.length]; idx++; - const payload = { color, brightness: 128 }; + const payload = { color, brightness: 80 }; const envelope = { event: 'api/neopattern/color', data: payload // server will serialize object payloads diff --git a/test/ws-cluster-broadcast-rainbow.js b/test/ws-cluster-broadcast-rainbow.js index 9780e04..8d42485 100644 --- a/test/ws-cluster-broadcast-rainbow.js +++ b/test/ws-cluster-broadcast-rainbow.js @@ -31,7 +31,7 @@ function toHex({ r, g, b }) { let hue = 0; const SAT = 1.0; // full saturation const VAL = 1.0; // full value -const BRIGHTNESS = 128; +const BRIGHTNESS = 80; const UPDATE_RATE = 100; // ms let timer = null; diff --git a/test/ws-color-client.js b/test/ws-color-client.js index f25e2f6..44400a8 100644 --- a/test/ws-color-client.js +++ b/test/ws-color-client.js @@ -22,7 +22,7 @@ ws.on('open', () => { setInterval(() => { const color = colors[idx % colors.length]; idx++; - const payload = { color, brightness: 128 }; + const payload = { color, brightness: 80 }; // Send payload as an object (server supports string or object) const msg = { event: 'api/neopattern/color', payload }; ws.send(JSON.stringify(msg));