aboutsummaryrefslogtreecommitdiff
path: root/src/zenutil/zenserverprocess.cpp
Commit message (Collapse)AuthorAgeFilesLines
* 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