aboutsummaryrefslogtreecommitdiff
path: root/src/zenserver/hub/storageserverinstance.h
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2026-03-27 09:51:29 +0100
committerGitHub Enterprise <[email protected]>2026-03-27 09:51:29 +0100
commite811745e5c37dd38a8fb9f4bc2892525401eabbd (patch)
tree63896cabc0eb895887dc8247bb573f0dfd696afa /src/zenserver/hub/storageserverinstance.h
parenthub async provision/deprovision/hibernate/wake (#891) (diff)
downloadzen-e811745e5c37dd38a8fb9f4bc2892525401eabbd.tar.xz
zen-e811745e5c37dd38a8fb9f4bc2892525401eabbd.zip
hub instance state refactor (#892)
- Improvement: Provisioning a hibernated instance now automatically wakes it instead of requiring an explicit wake call first - Improvement: Deprovisioning now accepts instances in Crashed or Hibernated states, not just Provisioned - Improvement: Added `--consul-health-interval-seconds` and `--consul-deregister-after-seconds` options to control Consul health check behavior (defaults: 10s and 30s) - Improvement: Consul registration now occurs when provisioning starts; health check intervals are applied once provisioning completes
Diffstat (limited to 'src/zenserver/hub/storageserverinstance.h')
-rw-r--r--src/zenserver/hub/storageserverinstance.h43
1 files changed, 12 insertions, 31 deletions
diff --git a/src/zenserver/hub/storageserverinstance.h b/src/zenserver/hub/storageserverinstance.h
index a0ca496dc..94c47630c 100644
--- a/src/zenserver/hub/storageserverinstance.h
+++ b/src/zenserver/hub/storageserverinstance.h
@@ -2,7 +2,6 @@
#pragma once
-#include "hubinstancestate.h"
#include "resourcemetrics.h"
#include <zenutil/zenserverprocess.h>
@@ -38,8 +37,7 @@ public:
const ResourceMetrics& GetResourceMetrics() const { return m_ResourceMetrics; }
inline std::string_view GetModuleId() const { return m_ModuleId; }
- inline HubInstanceState GetState() const { return m_State.load(); }
- inline uint16_t GetBasePort() const { return m_Config.BasePort; };
+ inline uint16_t GetBasePort() const { return m_Config.BasePort; }
void GetProcessMetrics(ProcessMetrics& OutMetrics) const;
#if ZEN_PLATFORM_WINDOWS
@@ -63,12 +61,7 @@ public:
operator bool() const { return m_Instance != nullptr; }
std::string_view GetModuleId() const;
- HubInstanceState GetState() const
- {
- ZEN_ASSERT(m_Instance);
- return m_Instance->m_State.load();
- }
- uint16_t GetBasePort() const
+ uint16_t GetBasePort() const
{
ZEN_ASSERT(m_Instance);
return m_Instance->GetBasePort();
@@ -114,12 +107,7 @@ public:
operator bool() const { return m_Instance != nullptr; }
std::string_view GetModuleId() const;
- HubInstanceState GetState() const
- {
- ZEN_ASSERT(m_Instance);
- return m_Instance->m_State.load();
- }
- uint16_t GetBasePort() const
+ uint16_t GetBasePort() const
{
ZEN_ASSERT(m_Instance);
return m_Instance->GetBasePort();
@@ -132,15 +120,10 @@ public:
return m_Instance->m_ResourceMetrics;
}
- // For Provision, Deprovision, Hibernate, Wake:
- // true = operation performed (state changed)
- // false = precondition not met (wrong state), nothing attempted
- // throws = operation attempted but failed; m_State corrected before throw
- [[nodiscard]] bool Provision();
- [[nodiscard]] bool Deprovision();
- [[nodiscard]] bool Hibernate();
- [[nodiscard]] bool Wake();
- [[nodiscard]] bool RecoverFromCrash(); // true = recovered; false = spawn failed (Crashed), caller must Deprovision() + cleanup
+ void Provision();
+ void Deprovision();
+ void Hibernate();
+ void Wake();
private:
RwLock* m_Lock = nullptr;
@@ -150,12 +133,11 @@ public:
[[nodiscard]] ExclusiveLockedPtr LockExclusive(bool Wait) { return ExclusiveLockedPtr(m_Lock, this, Wait); }
private:
- [[nodiscard]] bool ProvisionLocked();
- [[nodiscard]] bool DeprovisionLocked();
+ void ProvisionLocked();
+ void DeprovisionLocked();
- [[nodiscard]] bool HibernateLocked();
- [[nodiscard]] bool WakeLocked();
- [[nodiscard]] bool RecoverCrashedLocked(); // true = recovered (Provisioned); false = spawn failed (Crashed)
+ void HibernateLocked();
+ void WakeLocked();
void UpdateMetricsLocked();
@@ -164,8 +146,7 @@ private:
std::string m_ModuleId;
ZenServerInstance m_ServerInstance;
- std::atomic<HubInstanceState> m_State{HubInstanceState::Unprovisioned};
- std::filesystem::path m_BaseDir;
+ std::filesystem::path m_BaseDir;
std::filesystem::path m_TempDir;
ResourceMetrics m_ResourceMetrics;