aboutsummaryrefslogtreecommitdiff
path: root/src/zenutil/zenserverprocess.cpp
Commit message (Collapse)AuthorAgeFilesLines
* subprocess tracking using Jobs on Windows/hub (#796)HEADmainStefan Boberg11 days1-2/+15
| | | | | This change introduces job object support on Windows to be able to more accurately track and limit resource usage on storage instances created by the hub service. It also ensures that all child instances can be torn down reliably on exit. Also made it so hub tests no longer pop up console windows while running.
* Add test summary table and failure reporting to xmake test (#794)Stefan Boberg12 days1-1/+2
| | | | | | | | | | - Add a summary table printed after all test suites complete, showing per-suite test case counts, assertion counts, timings and pass/fail status. - Add failure reporting: individual failing test cases are listed at the end with their file path and line number for easy navigation. - Made zenserver instances spawned by a hub not create new console windows for a better background testing experience - The TestListener in testing.cpp now writes a machine-readable summary file (via `ZEN_TEST_SUMMARY_FILE` env var) containing aggregate counts and per-test-case failure details. This runs as a doctest listener alongside any active reporter, so it works with both console and JUnit modes. - Tests now run in a deterministic order defined by a single ordered list that also serves as the test name/target mapping, replacing the previous unordered table + separate order list. - The `--run` option now accepts comma-separated values (e.g. `--run=core,http,util`) and validates each name, reporting unknown test names early. - Fix platform detection in `xmake test`: the config command now passes `-p` explicitly, fixing "mingw" misdetection when running from Git Bash on Windows. - Add missing "util" entry to the help text for `--run`.
* reduce batch size for reads (#740)Dan Engelbrecht2026-01-291-1/+1
| | | | | * reduce maximum size per chunk to read to reduce disk contention * increase timeout before warning on slow shut down of zenserver * reduce default window size for blockstore chunk iteration
* ZenServerProcess API changes (#719)Stefan Boberg2026-01-191-15/+103
| | | | | | | This refactor aims to improve the `ZenServerProcess` classes by making them useful for managing child zenserver instances in more scenarios than just automated tests. This involves changing some functions to not talk about "test directory" and instead use "data directory" etc As a consequence of the API changes, some tests have changed accordingly. The code includes som reference to the "hub" mode but there is not yet any other code using this mode, it's just included in this PR to simplify future merges.
* speed up tests (#555)Dan Engelbrecht2025-10-061-3/+3
| | | | | | | | | | | | * faster FileSystemTraversal test * faster jobqueue test * faster NamedEvent test * faster cache tests * faster basic http tests * faster blockstore test * faster cache store tests * faster compactcas tests * more responsive zenserver launch * tweak worker pool sizes in tests
* make cpr a HttpClient implementation detail (#517)Stefan Boberg2025-09-291-1/+1
| | | | | these changes remove cpr from anything which is not `HttpClient` internals. The goal is to eventually replace cpr with a more direct curl interface to eliminate cpr since it's proven problematic due to their development practices which frequently breaks APIs and prevents us from updating vcpkg. But this PR is limited to refactoring existing cpr code to use `HttpClient` instead.
* remove debug log messages (#479)Dan Engelbrecht2025-08-271-2/+0
|
* Merge branch 'main' into de/zen-service-commandLiam Mitchell2025-07-291-6/+10
|\
| * pause, resume and abort running builds cmd (#421)Dan Engelbrecht2025-06-051-1/+1
| | | | | | | | | | - Feature: `zen builds pause`, `zen builds resume` and `zen builds abort` commands to control a running `zen builds` command - `--process-id` the process id to control, if omitted it tries to find a running process using the same executable as itself - Improvement: Process report now indicates if it is pausing or aborting
| * frequent disk space check (#407)Dan Engelbrecht2025-05-271-1/+5
| | | | | | | | * check low disk space condition more frequently and trigger GC when low water mark is reached * show waited time when waiting for zenserver instance to exit
| * long filename support (#330)Dan Engelbrecht2025-03-311-4/+4
| | | | | | - Bugfix: Long file paths now works correctly on Windows
* | Implementation of service commands for Linux.Liam Mitchell2025-02-271-1/+13
| |
* | Merge remote-tracking branch 'origin/main' into de/zen-service-commandDan Engelbrecht2025-01-171-1/+1
|\|
| * move basicfile.h/cpp -> zencore (#273)Dan Engelbrecht2025-01-161-1/+1
| | | | | | | | | | | | move jupiter.h/cpp -> zenutil move packageformat.h/.cpp -> zenhttp zenutil now depends on zenhttp instead of the inverse
* | clang formatDan Engelbrecht2025-01-151-1/+1
| |
* | systemd unit file, incompleteDan Engelbrecht2025-01-151-1/+2
|/
* fixed some issues with ZenServerInstance::SpawnServer (#218)Stefan Boberg2024-11-141-17/+25
| | | | * previously it would assign a child identifier twice in some cases, which would lead to confusing log output * added pid as context in debug logging when launching a process
* sponsor process attach hardening (#208)Dan Engelbrecht2024-11-041-6/+9
| | | * make sure to clear sponsor slot if pickup does not happen
* zenserver process launch/termination improvements (#138)Dan Engelbrecht2024-08-271-69/+139
| | | | | | * zenserver process launch/termination improvements * fix GetPidStatus to return error code on Linux * fix linux FindProcess() * cleanup IsZombieProcess
* safer calls to IsProcessRunning (#131)Dan Engelbrecht2024-08-221-11/+43
| | | * safer calls to IsProcessRunning to handle cases where we can't check status of processes
* workspace shares (#84)Dan Engelbrecht2024-05-291-0/+6
| | | Feature: New 'workspaces' service which allows a user to share a local folder via zenserver. A workspace can have mulitple workspace shares and they provie an HTTP API that is compatible with the project oplog HTTP API. Workspaces and shares are preserved between runs. Workspaces feature is disabled by default - enable with --workspaces-enabled option when launching zenserver.
* added logic to change default HTTP server implementation when running on ↵Stefan Boberg2024-05-021-3/+8
| | | | | | Wine (#71) * added logic to change default HTTP server implementation when running on Wine * added log message to inform user about potential problems when running under Wine
* zenserverprocess hardening (#61)Dan Engelbrecht2024-04-251-9/+28
| | | | * verify running process before creating event * make sure we don't signal/wait for a zenserver instance that we did not wait for to get ready
* import oplog improvements (#54)Dan Engelbrecht2024-04-201-3/+5
| | | | | | | | | | | * report down/up transfer speed during progress * add disk buffering in http client * offload block decoding and chunk writing form network worker pool threads add block hash verification for blocks recevied at oplog import * separate download-latch from write-latch to get more accurate download speed * check headers when downloading with http client to go directly to file writing for large payloads * we must clear write callback even if we only provide it as an argument to the Download() call * make timeout optional in AddSponsorProcess * check return codes when creating windows threadpool
* capture zenserver output on error (#51)Dan Engelbrecht2024-04-181-22/+83
| | | | * capture spawned server output and output on launch error * fix logging and launch validation in tests
* improved lock file handling (#50)Dan Engelbrecht2024-04-181-10/+103
| | | | | | | | | | | | - Feature: `zen down` - --`data-dir` to specify a data directory to deduce which zen instance to bring down - Feature: `zen attach` - --`data-dir` to specify a data directory to deduce which zen instance to attach to222 - Feature: `zen status` - --`port` filter running zen instances based on port - --`data-dir` filter running zen instances based on information in the data directory - Improvement: Trying to load a compact binary object from an empty file no longer causes access violation
* zen startup hardening (#49)Dan Engelbrecht2024-04-171-10/+74
| | | | | | | | | | | | | - Feature: `zen up` command improvements - --`port` allows you to specify a base port when starting an instance - --`base-dir` allows you to specify a base directory for the zenserver executable if it is not located next to the zen.exe executable - Feature: `zen down` - --`port` allows you to specify a base port when shutting down an instance - --`base-dir` allows you to specify a base directory for the zenserver executable if it is not located next to the zen.exe executable - --`force` if regular shutdown fails it tries to find a running zenserver.exe process and terminate it - If it fails to attach to the running server it now waits for it to exit when setting the RequestExit shared memory flag - Improvement: zenserver now checks the RequestExit flag in the shared memory and exist gracefully if it is set - Improvement: When adding a sponsor process to a running zenserver instance, we wait for it to be picked up from the shared memory section to determine success/fail
* harden attach sponsor process (#14)Dan Engelbrecht2024-03-211-10/+7
| | | | | - Improvement: Delay exiting due to no sponsor processes by one second to handle race conditions - Improvement: Safer IsProcessRunning check - Improvement: make sure we can RequestApplicationExit safely from any thread
* improved process monitoring behaviour with invalid pids (#16)Stefan Boberg2024-03-211-1/+8
|
* fix zenserver state macos (#669)Dan Engelbrecht2024-03-101-1/+5
| | | | | | - Shared memory for zenserver state may hang around after all zenserver processes exit - make sure we find a valid entry in `zen up` before bailing - Httpasio add retry for desired port - Httpasio only call listen() once - Httpasio explicitly close acceptor sockets
* use dynamic port assignment for tests (#545)Stefan Boberg2023-11-171-40/+57
| | | this change replaces hard-coded port numbers in tests with dynamically assigned ports, to avoid potential issues around socket lifetimes and re-use policies
* blocking queue fix (#550)Dan Engelbrecht2023-11-161-11/+35
| | | | | | | | | * make BlockingQueue::m_CompleteAdding non-atomic * ZenCacheDiskLayer::Flush logging * name worker threads in ZenCacheDiskLayer::DiscoverBuckets * name worker threads in gcv2 * improved logging in ZenServerInstance * scrub threadpool naming * remove waitpid handling, we should just call wait to kill zombie processes
* add doctest listener so we can output when test/subtests begin (#538)Dan Engelbrecht2023-11-151-0/+1
| | | | * add doctest listener so we can output when test/subtests begin * disable sentry when running a test server
* fix race contdition when signaling shutdown of process and waiting for ↵Dan Engelbrecht2023-11-151-1/+9
| | | | completion (#539)
* fix bad access to unlocked state (#527)Dan Engelbrecht2023-11-101-0/+1
| | | | * don't touch non-locked data when creating manifest * safety assert for test dir
* added missing includes (#504)Stefan Boberg2023-10-271-0/+3
| | | | | this change adds some includes to files which "inherit" includes from elsewhere this was exposed on another branch when removing some heavy dependencies from central headers
* more cleanup from sb/protoStefan Boberg2023-10-201-0/+7
|
* fix zen server state mac mmap (#380)Dan Engelbrecht2023-08-311-1/+1
| | | | * use MAP_SHARED when initializing read only access of shared memory * changelog
* update vcpkg dependencies (#356)Dan Engelbrecht2023-08-111-1/+1
| | | | | | * bump vcpkg version * fmt lib 10 fixes * xmake dependencies (with linux workarounds) * changelog
* added ZenServerInstance::SpawnServerAndWait (#334)Stefan Boberg2023-06-161-4/+48
| | | | | this change adds `ZenServerInstance::SpawnServerAndWait()` which as the name implies spawns a server and then waits for the instance to reach a usable state before returning to the caller. It also changes the behaviour of `ZenServerInstance::AttachToRunningServer()` so it matches the Spawn behaviour wrt automatic termination on ZenServerInstance destruction. Previously it would always terminate the subprocess on exit.
* Remove ATL header usage (#306)Stefan Boberg2023-05-151-1/+0
| | | ATL has been used here and there as a convenience. Given that this is a legacy component and not always something which gets installed along with the compiler we hereby remove the dependency altogether in favour of our own simple wrappers
* moved source directories into `/src` (#264)Stefan Boberg2023-05-021-0/+677
* moved source directories into `/src` * updated bundle.lua for new `src` path * moved some docs, icon * removed old test trees