diff options
| author | Dan Engelbrecht <[email protected]> | 2026-03-28 17:09:42 +0100 |
|---|---|---|
| committer | Dan Engelbrecht <[email protected]> | 2026-03-28 17:09:42 +0100 |
| commit | f6cb7e24e188abf3aebb6fc58299ed555a218f7a (patch) | |
| tree | 67597ab0143a02aff2cce16075d77e8ebabb1bd6 | |
| parent | fix tests (diff) | |
| download | zen-de/hub-process-info-refactor.tar.xz zen-de/hub-process-info-refactor.zip | |
cleanup and options validationde/hub-process-info-refactor
| -rw-r--r-- | src/zenserver/frontend/html/pages/hub.js | 6 | ||||
| -rw-r--r-- | src/zenserver/hub/httphubservice.cpp | 18 | ||||
| -rw-r--r-- | src/zenserver/hub/hub.cpp | 4 | ||||
| -rw-r--r-- | src/zenserver/hub/zenhubserver.cpp | 16 |
4 files changed, 35 insertions, 9 deletions
diff --git a/src/zenserver/frontend/html/pages/hub.js b/src/zenserver/frontend/html/pages/hub.js index b3bfe7eba..c6f96d496 100644 --- a/src/zenserver/frontend/html/pages/hub.js +++ b/src/zenserver/frontend/html/pages/hub.js @@ -219,9 +219,9 @@ export class Page extends ZenPage const limits = data.resource_limits || {}; if (machine.disk_total_bytes > 0 || machine.memory_total_mib > 0) { - const disk_used = (machine.disk_total_bytes || 0) - (machine.disk_free_bytes || 0); - const mem_used = ((machine.memory_total_mib || 0) - (machine.memory_avail_mib || 0)) * 1024 * 1024; - const vmem_used = ((machine.virtual_memory_total_mib || 0) - (machine.virtual_memory_avail_mib || 0)) * 1024 * 1024; + const disk_used = Math.max(0, (machine.disk_total_bytes || 0) - (machine.disk_free_bytes || 0)); + const mem_used = Math.max(0, (machine.memory_total_mib || 0) - (machine.memory_avail_mib || 0)) * 1024 * 1024; + const vmem_used = Math.max(0, (machine.virtual_memory_total_mib || 0) - (machine.virtual_memory_avail_mib || 0)) * 1024 * 1024; const disk_limit = limits.disk_bytes || 0; const mem_limit = limits.memory_bytes || 0; const disk_over = disk_limit > 0 && disk_used > disk_limit; diff --git a/src/zenserver/hub/httphubservice.cpp b/src/zenserver/hub/httphubservice.cpp index 485da0e6c..5b0e14042 100644 --- a/src/zenserver/hub/httphubservice.cpp +++ b/src/zenserver/hub/httphubservice.cpp @@ -84,14 +84,22 @@ HttpHubService::HttpHubService(Hub& Hub, HttpStatsService& StatsService, HttpSta { const std::time_t T = std::chrono::system_clock::to_time_t(Info.StateChangeTime); std::tm Tm{}; + bool TmOk; #if ZEN_PLATFORM_WINDOWS - gmtime_s(&Tm, &T); + TmOk = gmtime_s(&Tm, &T) == 0; #else - gmtime_r(&T, &Tm); + TmOk = gmtime_r(&T, &Tm) != nullptr; #endif - char Buf[32]; - std::strftime(Buf, sizeof(Buf), "%Y-%m-%dT%H:%M:%SZ", &Tm); - Obj << "state_change_time" << std::string_view(Buf); + if (TmOk) + { + char Buf[32]; + std::strftime(Buf, sizeof(Buf), "%Y-%m-%dT%H:%M:%SZ", &Tm); + Obj << "state_change_time" << std::string_view(Buf); + } + else + { + ZEN_WARN("gmtime failed for state_change_time value {}", T); + } } Obj.BeginObject("process_metrics"); { diff --git a/src/zenserver/hub/hub.cpp b/src/zenserver/hub/hub.cpp index a9c54dc6f..507f66f6c 100644 --- a/src/zenserver/hub/hub.cpp +++ b/src/zenserver/hub/hub.cpp @@ -1393,6 +1393,10 @@ Hub::UpdateMachineMetrics() { m_MachineMetrics.Store(Disk); } + else + { + ZEN_WARN("Failed to query disk space for '{}'; disk-based provisioning limits will not be enforced", ChildDir); + } } m_MachineMetrics.Store(GetSystemMetrics()); diff --git a/src/zenserver/hub/zenhubserver.cpp b/src/zenserver/hub/zenhubserver.cpp index 36fe4e44f..74d0a01b0 100644 --- a/src/zenserver/hub/zenhubserver.cpp +++ b/src/zenserver/hub/zenhubserver.cpp @@ -7,6 +7,7 @@ #include "hub.h" #include <zencore/config.h> +#include <zencore/except.h> #include <zencore/filesystem.h> #include <zencore/fmtutils.h> #include <zencore/memory/llm.h> @@ -265,6 +266,19 @@ ZenHubServerConfigurator::OnConfigFileParsed(LuaConfig::Options& LuaOptions) void ZenHubServerConfigurator::ValidateOptions() { + if (m_ServerOptions.HubProvisionDiskLimitPercent != ~uint32_t{0} && m_ServerOptions.HubProvisionDiskLimitPercent > 100) + { + throw OptionParseException( + fmt::format("'--{}' ({}) must be in range 0..100", kHubProvisionDiskLimitPercent, m_ServerOptions.HubProvisionDiskLimitPercent), + {}); + } + if (m_ServerOptions.HubProvisionMemoryLimitPercent != ~uint32_t{0} && m_ServerOptions.HubProvisionMemoryLimitPercent > 100) + { + throw OptionParseException(fmt::format("'--{}' ({}) must be in range 0..100", + kHubProvisionMemoryLimitPercent, + m_ServerOptions.HubProvisionMemoryLimitPercent), + {}); + } } /////////////////////////////////////////////////////////////////////////// @@ -430,7 +444,7 @@ ZenHubServer::ResolveResourceLimit(uint64_t DirectBytes, uint32_t Percent, uint6 if (BytesLimit == 0 && PercentBytes == 0) { - ZEN_INFO("No {} limit enforced", ResourceName); + ZEN_INFO("No {} limit enforced (explicitly disabled via configuration)", ResourceName); return 0; } if (BytesLimit == 0) |