diff options
| author | Dan Engelbrecht <[email protected]> | 2026-03-27 09:51:29 +0100 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2026-03-27 09:51:29 +0100 |
| commit | e811745e5c37dd38a8fb9f4bc2892525401eabbd (patch) | |
| tree | 63896cabc0eb895887dc8247bb573f0dfd696afa /src/zenserver/hub/storageserverinstance.h | |
| parent | hub async provision/deprovision/hibernate/wake (#891) (diff) | |
| download | zen-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.h | 43 |
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; |