diff options
| author | Dan Engelbrecht <[email protected]> | 2026-03-20 13:44:00 +0100 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2026-03-20 13:44:00 +0100 |
| commit | 7cc4b1701aa2923573adabceed486229abba5a2d (patch) | |
| tree | 04a1b5eddcabd24e5c5a50a817fa50c5829972f2 /src/zencore | |
| parent | Zs/consul token (#870) (diff) | |
| download | zen-7cc4b1701aa2923573adabceed486229abba5a2d.tar.xz zen-7cc4b1701aa2923573adabceed486229abba5a2d.zip | |
add hub instance info (#869)
- Improvement: Hub module listing now includes per-instance process metrics (memory, CPU time, working set, pagefile usage)
- Improvement: Hub now monitors provisioned instance health in the background and refreshes process metrics periodically
- Improvement: Hub no longer exposes raw `StorageServerInstance` pointers to callers; instance state is returned as value snapshots (`Hub::InstanceInfo`)
- Improvement: Hub instance access is now guarded by RAII per-instance locks (`SharedLockedPtr`/`ExclusiveLockedPtr`), preventing concurrent modifications during provisioning and deprovisioning
- Improvement: Hub instance lifecycle is now tracked as a `HubInstanceState` enum covering transitional states (Provisioning, Deprovisioning, Hibernating, Waking); exposed as a string in the HTTP API and dashboard
Diffstat (limited to 'src/zencore')
| -rw-r--r-- | src/zencore/include/zencore/process.h | 2 | ||||
| -rw-r--r-- | src/zencore/include/zencore/thread.h | 2 | ||||
| -rw-r--r-- | src/zencore/process.cpp | 2 | ||||
| -rw-r--r-- | src/zencore/thread.cpp | 12 |
4 files changed, 16 insertions, 2 deletions
diff --git a/src/zencore/include/zencore/process.h b/src/zencore/include/zencore/process.h index 3177f64c1..96afd5950 100644 --- a/src/zencore/include/zencore/process.h +++ b/src/zencore/include/zencore/process.h @@ -176,7 +176,7 @@ struct ProcessMetrics uint64_t PeakPagefileUsage = 0; }; -void GetProcessMetrics(ProcessHandle& Handle, ProcessMetrics& OutMetrics); +void GetProcessMetrics(const ProcessHandle& Handle, ProcessMetrics& OutMetrics); void process_forcelink(); // internal diff --git a/src/zencore/include/zencore/thread.h b/src/zencore/include/zencore/thread.h index d0d710ee8..d7262324f 100644 --- a/src/zencore/include/zencore/thread.h +++ b/src/zencore/include/zencore/thread.h @@ -28,9 +28,11 @@ class RwLock { public: void AcquireShared() noexcept; + bool TryAcquireShared() noexcept; void ReleaseShared() noexcept; void AcquireExclusive() noexcept; + bool TryAcquireExclusive() noexcept; void ReleaseExclusive() noexcept; struct SharedLockScope diff --git a/src/zencore/process.cpp b/src/zencore/process.cpp index 0c55e6c7e..29de107bd 100644 --- a/src/zencore/process.cpp +++ b/src/zencore/process.cpp @@ -1564,7 +1564,7 @@ WaitForThreads(uint64_t WaitTimeMs) } void -GetProcessMetrics(ProcessHandle& Handle, ProcessMetrics& OutMetrics) +GetProcessMetrics(const ProcessHandle& Handle, ProcessMetrics& OutMetrics) { #if ZEN_PLATFORM_WINDOWS FILETIME CreationTime; diff --git a/src/zencore/thread.cpp b/src/zencore/thread.cpp index 54459cbaa..f74791333 100644 --- a/src/zencore/thread.cpp +++ b/src/zencore/thread.cpp @@ -146,6 +146,12 @@ RwLock::AcquireShared() noexcept m_Mutex.lock_shared(); } +bool +RwLock::TryAcquireShared() noexcept +{ + return m_Mutex.try_lock_shared(); +} + void RwLock::ReleaseShared() noexcept { @@ -158,6 +164,12 @@ RwLock::AcquireExclusive() noexcept m_Mutex.lock(); } +bool +RwLock::TryAcquireExclusive() noexcept +{ + return m_Mutex.try_lock(); +} + void RwLock::ReleaseExclusive() noexcept { |