From 4d8fae7636ad45900f22253621b9f7d51d0b646e Mon Sep 17 00:00:00 2001 From: Dan Engelbrecht Date: Tue, 7 Apr 2026 16:53:55 +0200 Subject: incremental dehydrate (#921) - Feature: Incremental CAS-based hydration/dehydration replacing the previous full-copy approach - Feature: S3 hydration backend with multipart upload/download support - Feature: Configurable thread pools for hub instance provisioning and hydration `--hub-instance-provision-threads` defaults to `max(cpu_count / 4, 2)`. Set to 0 for synchronous operation. `--hub-hydration-threads` defaults to `max(cpu_count / 4, 2)`. Set to 0 for synchronous operation. - Improvement: Hub triggers GC on instance before deprovisioning to compact storage before dehydration - Improvement: GC status now reports pending triggers as running - Improvement: S3 client debug logging gated behind verbose mode to reduce log noise at default verbosity - Improvement: Hub dashboard Resources tile now shows total memory - Improvement: `filesystemutils` moved from `zenremotestore` to `zenutil` for broader reuse - Improvement: Hub uses separate provision and hydration worker pools to avoid deadlocks - Improvement: Hibernate/wake/deprovision on non-existent or already-in-target-state modules are idempotent - Improvement: `ScopedTemporaryDirectory` with empty path now creates a temporary directory instead of asserting --- src/zencore/testutils.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/zencore/testutils.cpp') diff --git a/src/zencore/testutils.cpp b/src/zencore/testutils.cpp index c9908aec8..44446bd40 100644 --- a/src/zencore/testutils.cpp +++ b/src/zencore/testutils.cpp @@ -30,11 +30,15 @@ ScopedTemporaryDirectory::ScopedTemporaryDirectory() : m_RootPath(CreateTemporar { } -ScopedTemporaryDirectory::ScopedTemporaryDirectory(std::filesystem::path Directory) : m_RootPath(Directory) +ScopedTemporaryDirectory::ScopedTemporaryDirectory(std::filesystem::path Directory) +: m_RootPath(Directory.empty() ? CreateTemporaryDirectory() : Directory) { - std::error_code Ec; - DeleteDirectories(Directory, Ec); - CreateDirectories(Directory); + if (!Directory.empty()) + { + std::error_code Ec; + DeleteDirectories(Directory, Ec); + CreateDirectories(Directory); + } } ScopedTemporaryDirectory::~ScopedTemporaryDirectory() -- cgit v1.2.3